При работе со старыми версиями платформы 1С, такими как 8.1, пользователи часто сталкиваются с ошибкой "Ошибка работы с Интернет: SSL connect error". Обычно это происходит при попытке получить данные с веб-сервисов, например, когда требуется интерактивное обучение работе с HTTP-запросами или загрузка курсов валют. Проблема возникает внезапно, хотя раньше все работало исправно. Давайте подробно разберем, почему это происходит и какие существуют способы решения.
Основная причина кроется в ужесточении требований к безопасности в интернете. Современные серверы перестают поддерживать устаревшие протоколы шифрования (такие как SSLv3, TLS 1.0, TLS 1.1) и требуют использования актуальных, например, TLS 1.2. Старая платформа 1С 8.1 и операционные системы вроде Windows 7 без обновлений по умолчанию не умеют работать с этими новыми протоколами, что и приводит к сбою при установке защищенного соединения.
Проанализируем несколько способов решения этой проблемы, позволяющих наладить обмен данными между базами 1С и приложениями, от наиболее правильных до обходных путей.
Поскольку 1С для HTTP-соединений использует системные компоненты Windows (в частности, WinHTTP), в первую очередь нужно научить саму операционную систему работать с современными протоколами. Этот способ является наиболее корректным, так как решает проблему на системном уровне, что важно для обеспечения защищенной IT-инфраструктуры предприятия.
Для Windows 7 необходимо выполнить следующие шаги:
После этих действий операционная система будет готова к работе по TLS 1.2, и с большой вероятностью ошибка в 1С исчезнет без каких-либо изменений в самой программе.
Платформа 1С использует собственный файл с доверенными корневыми сертификатами — cacert.pem, который находится в папке bin каталога установки платформы. Если сертификат сайта, к которому вы обращаетесь, или один из сертификатов в его цепочке устарел или отсутствует в этом файле, проверка подлинности не пройдет.
Разберем по шагам, как обновить этот файл:
set OPENSSL_CONF=C:\OpenSSL-Win32\bin\openssl.cfg
C:\1.cer, C:\2.cer и т.д.).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 позволяет дописывать данные в конец файла, создавая единый список сертификатов.
cacert.pem.
cacert.pem из папки C:\Program Files (x86)\1cv81\bin\.D:\all_certs.pem в текстовом редакторе.cacert.pem и вставьте скопированный текст в самый конец файла. Сохраните изменения.Важно: Этот метод может не сработать, если основная проблема в отсутствии поддержки TLS 1.2 на уровне ОС, но он необходим, если проблема именно в недоверенном сертификате, даже если вы используете стандартные средства 1С для аутентификации по токенам.
Это надежный обходной путь, когда первые два способа не помогли или их реализация затруднительна. Идея заключается в том, чтобы "посредник" установил защищенное соединение за 1С.
Принцип работы:
stunnel.stunnel так, чтобы он "слушал" локальный порт (например, 8080) и перенаправлял все поступающие на него запросы на целевой HTTPS-адрес (например, https://www.nbkr.kg:443), но уже с использованием современных протоколов шифрования."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С и старой ОС задачу по установке современного защищенного соединения.
Если 1С работает в серверном варианте, служба агента сервера 1С:Предприятия может запускаться от имени отдельного системного пользователя (например, USR1CV8). У этого пользователя могут быть свои настройки доступа в интернет.
Чтобы проверить это, зайдите в систему под этим пользователем и попробуйте открыть проблемный URL в браузере (например, Internet Explorer). Если браузер выдаст предупреждения о безопасности, ошибки сертификатов или потребует подтверждения, это означает, что проблема на уровне системных настроек пользователя. Решите эти проблемы в браузере (например, установив корневые сертификаты в хранилище Windows для этого пользователя), и, возможно, 1С тоже начнет работать.
В заключение: хотя все перечисленные методы могут помочь решить проблему, они являются временными мерами. Наиболее правильным и долгосрочным решением будет переход на современную версию платформы 1С:Предприятие 8.3, которая имеет встроенную поддержку актуальных протоколов безопасности и не требует подобных "костылей".