Во время разработки и отладки конфигураций в среде «1С:Предприятие 8.3» разработчики могут столкнуться с критическим сбоем при попытке запуска сеанса из Конфигуратора: «При получении последовательности случайных данных произошла ошибка error:00000000:lib(0):func(0):reason(0)». При этом система предлагает лишь два варианта действий: «Завершить работу» или «Перезапустить». В то же время обычный запуск базы в режиме предприятия без подключения отладчика проходит штатно.
Разберем детально технические причины возникновения этой проблемы и рассмотрим все способы ее решения — от быстрого переключения параметров отладки до системной настройки операционной системы.
Проанализируем текст диагностического сообщения. Структура вида error:00000000:lib(0):func(0):reason(0) характерна для внутренней криптографической библиотеки OpenSSL, которую платформа 1С использует для шифрования соединений. Ошибка сообщает об отказе генератора псевдослучайных чисел (PRNG — Pseudo-Random Number Generator): библиотека пытается получить энтропию (последовательность случайных данных) для формирования ключей шифрования сеанса или векторов инициализации, но системный вызов завершается ошибкой с пустым стеком кодов.
Рассмотрим, почему это происходит именно в момент перехода к отладке:
Самый быстрый, надежный и рекомендуемый фирмой «1С» способ устранения ошибки — смена устаревшего протокола отладки на современный протокол HTTP. Начиная с версии 8.3.7 в платформе появился механизм отладки по HTTP через выделенный брокер отладки, не требующий низкоуровневого шифрования сокетов средствами устаревшего стека TCP/IP. Начиная с релиза 8.3.14 поддержка протокола TCP/IP была окончательно удалена из платформы.
Выполним переключение протокола по шагам:
После включения протокола HTTP платформа перестает обращаться к сбойному механизму генерации случайных данных для сокетов, и сеанс отладки стартует мгновенно.
Если вы работаете на устаревших релизах платформы (например, 8.3.9.2233), целесообразно выполнить обновление до актуальной версии 8.3. В современных версиях протокол HTTP включен по умолчанию, исправлены многие ошибки взаимодействия с системными криптопровайдерами Windows, а устаревший стек TCP-отладки полностью исключен из ядра программы.
Если смена протокола по каким-либо причинам невозможна или сбои криптографии затрагивают другие механизмы платформы, выясним причину отказа системного генератора случайных чисел Windows.
Чаще всего сбой CryptoAPI вызван повреждением разрешений на служебный каталог хранения системных ключей RSA. Проверим права доступа к папке:
C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys.Нередко причиной блокировки локального сетевого трафика (loopback 127.0.0.1) становятся остаточные фильтры сетевого стека, оставшиеся после некорректного удаления антивирусов (например, ESET NOD32, Касперский, Dr.Web). Стандартное удаление через «Панель управления» может оставить активными драйверы фильтрации WFP/NDIS.
Разберем действия для полной нормализации сетевого стека:
netsh winsock reset
netsh int ip reset
В операционных системах Windows может быть включена политика обязательного применения стандартов FIPS. При ее активности системный криптопровайдер блокирует любые несертифицированные алгоритмы и вызовы внешних генераторов энтропии, что приводит к моментальному отказу библиотек OpenSSL.
Проверим состояние политики безопасности:
secpol.msc и нажмем Enter.Реализация базовой рекомендации — переключения протокола отладки на HTTP в параметрах Конфигуратора — полностью нейтрализует возникновение ошибки без риска нарушения стабильности работы операционной системы.