Как исправить ошибку "SSL connect error" в 1С 8.1 при загрузке данных из интернета?

Системный администратор IT и автоматизация бизнеса
← На главную

При работе со старыми версиями платформы 1С, такими как 8.1, пользователи часто сталкиваются с ошибкой "Ошибка работы с Интернет: SSL connect error". Обычно это происходит при попытке получить данные с веб-сервисов, например, когда требуется интерактивное обучение работе с HTTP-запросами или загрузка курсов валют. Проблема возникает внезапно, хотя раньше все работало исправно. Давайте подробно разберем, почему это происходит и какие существуют способы решения.

Основная причина кроется в ужесточении требований к безопасности в интернете. Современные серверы перестают поддерживать устаревшие протоколы шифрования (такие как SSLv3, TLS 1.0, TLS 1.1) и требуют использования актуальных, например, TLS 1.2. Старая платформа 1С 8.1 и операционные системы вроде Windows 7 без обновлений по умолчанию не умеют работать с этими новыми протоколами, что и приводит к сбою при установке защищенного соединения.

Проанализируем несколько способов решения этой проблемы, позволяющих наладить обмен данными между базами 1С и приложениями, от наиболее правильных до обходных путей.

Решение 1: Обновление операционной системы для поддержки TLS 1.2

Поскольку 1С для HTTP-соединений использует системные компоненты Windows (в частности, WinHTTP), в первую очередь нужно научить саму операционную систему работать с современными протоколами. Этот способ является наиболее корректным, так как решает проблему на системном уровне, что важно для обеспечения защищенной IT-инфраструктуры предприятия.

Для Windows 7 необходимо выполнить следующие шаги:

  1. Установить обновление KB3140245. Это обновление от Microsoft добавляет поддержку протоколов TLS 1.1 и TLS 1.2 в операционную систему. Убедитесь, что у вас установлен Service Pack 1, без него обновление не установится.
  2. Применить исправление "Easy Fix". После установки обновления нужно дополнительно настроить системный реестр, чтобы новые протоколы использовались по умолчанию. Microsoft выпустила для этого специальную утилиту "Easy Fix" (в файле MicrosoftEasyFix51044.msi). Она вносит необходимые изменения в ветки реестра, отвечающие за настройки WinHTTP.
  3. Перезагрузить систему. После установки обновлений и применения исправления обязательно перезагрузите компьютер или сервер, чтобы все изменения вступили в силу.

После этих действий операционная система будет готова к работе по TLS 1.2, и с большой вероятностью ошибка в 1С исчезнет без каких-либо изменений в самой программе.

Решение 2: Обновление хранилища корневых сертификатов 1С

Платформа 1С использует собственный файл с доверенными корневыми сертификатами — cacert.pem, который находится в папке bin каталога установки платформы. Если сертификат сайта, к которому вы обращаетесь, или один из сертификатов в его цепочке устарел или отсутствует в этом файле, проверка подлинности не пройдет.

Разберем по шагам, как обновить этот файл:

  1. Установите OpenSSL. Это набор инструментов для работы с SSL/TLS. Скачайте дистрибутив (например, с сайта slproweb) и установите его. После установки может потребоваться указать переменную окружения для корректной работы из командной строки. set OPENSSL_CONF=C:\OpenSSL-Win32\bin\openssl.cfg
  2. Получите цепочку сертификатов сайта. Откройте в браузере (например, Chrome) нужный URL (в примере из темы — сайт банка Киргизии).
    • Нажмите на значок замка в адресной строке.
    • Перейдите в раздел "Сертификат" (или "Certificate").
    • Откройте вкладку "Путь сертификации" ("Certification Path"). Вы увидите всю цепочку сертификатов, от корневого (самого верхнего) до сертификата самого сайта.
  3. Экспортируйте каждый сертификат из цепочки.
    • Выделите поочередно каждый сертификат в цепочке (начиная с верхнего).
    • Нажмите кнопку "Просмотр сертификата" ("View Certificate").
    • В открывшемся окне перейдите на вкладку "Состав" ("Details").
    • Нажмите кнопку "Копировать в файл..." ("Copy to File...").
    • В мастере экспорта выберите формат "Файлы X.509 (.CER) в кодировке DER".
    • Сохраните каждый сертификат в отдельный файл (например, C:\1.cer, C:\2.cer и т.д.).
  4. Преобразуйте сертификаты в формат PEM. Откройте командную строку и перейдите в папку bin вашей установки OpenSSL. Для каждого сохраненного .cer файла выполните команду, которая сконвертирует его и добавит в один общий текстовый файл.
    
    openssl x509 -inform der -in C:\1.cer -out D:\all_certs.pem -outform PEM -append
    openssl x509 -inform der -in C:\2.cer -out D:\all_certs.pem -outform PEM -append
    
    Ключ -append позволяет дописывать данные в конец файла, создавая единый список сертификатов.
  5. Добавьте новые сертификаты в cacert.pem.
    • Сделайте резервную копию оригинального файла cacert.pem из папки C:\Program Files (x86)\1cv81\bin\.
    • Откройте созданный вами файл D:\all_certs.pem в текстовом редакторе.
    • Скопируйте все его содержимое (оно будет выглядеть как блоки текста, начинающиеся с `-----BEGIN CERTIFICATE-----` и заканчивающиеся `-----END CERTIFICATE-----`).
    • Откройте оригинальный файл cacert.pem и вставьте скопированный текст в самый конец файла. Сохраните изменения.

Важно: Этот метод может не сработать, если основная проблема в отсутствии поддержки TLS 1.2 на уровне ОС, но он необходим, если проблема именно в недоверенном сертификате, даже если вы используете стандартные средства 1С для аутентификации по токенам.

Решение 3: Использование SSL-туннеля (stunnel)

Это надежный обходной путь, когда первые два способа не помогли или их реализация затруднительна. Идея заключается в том, чтобы "посредник" установил защищенное соединение за 1С.

Принцип работы:

  1. Вы устанавливаете на компьютер или сервер программу stunnel.
  2. Вы настраиваете stunnel так, чтобы он "слушал" локальный порт (например, 8080) и перенаправлял все поступающие на него запросы на целевой HTTPS-адрес (например, https://www.nbkr.kg:443), но уже с использованием современных протоколов шифрования.
  3. В коде 1С вы меняете адрес обращения с "https://www.nbkr.kg/..." на "http://127.0.0.1:8080/...".

Таким образом, 1С отправляет простой HTTP-запрос на локальный адрес, что не требует SSL/TLS. stunnel принимает этот запрос, "заворачивает" его в защищенное TLS 1.2 соединение и отправляет на конечный сервер. Ответ от сервера он также "разворачивает" и отдает 1С в незашифрованном виде.

Пример конфигурационного файла stunnel.conf:


; Указываем путь к лог-файлу для отладки
debug = 7
output = stunnel.log

; Режим клиента
client = yes

[nbkr-rates]
; На каком локальном порту принимаем незащищенные соединения от 1С
accept  = 127.0.0.1:8080
; На какой удаленный защищенный сервер перенаправляем
connect = www.nbkr.kg:443

Этот метод практически всегда решает проблему, так как полностью снимает с 1С и старой ОС задачу по установке современного защищенного соединения.

Решение 4: Дополнительная диагностика

Если 1С работает в серверном варианте, служба агента сервера 1С:Предприятия может запускаться от имени отдельного системного пользователя (например, USR1CV8). У этого пользователя могут быть свои настройки доступа в интернет.

Чтобы проверить это, зайдите в систему под этим пользователем и попробуйте открыть проблемный URL в браузере (например, Internet Explorer). Если браузер выдаст предупреждения о безопасности, ошибки сертификатов или потребует подтверждения, это означает, что проблема на уровне системных настроек пользователя. Решите эти проблемы в браузере (например, установив корневые сертификаты в хранилище Windows для этого пользователя), и, возможно, 1С тоже начнет работать.

В заключение: хотя все перечисленные методы могут помочь решить проблему, они являются временными мерами. Наиболее правильным и долгосрочным решением будет переход на современную версию платформы 1С:Предприятие 8.3, которая имеет встроенную поддержку актуальных протоколов безопасности и не требует подобных "костылей".

← На главную