Многие разработчики сталкиваются с критической проблемой при поддержке старых систем: при переносе внешних веб-сервисов (например, проверки контрагентов) на протокол HTTPS, платформа 1С 8.1 перестает подключаться к ним корректно. Это происходит из-за того, что архитектура версии 8.1 не поддерживает современные протоколы шифрования TLS 1.2 и 1.3, которые стали стандартом безопасности в сети Интернет. Давайте разберем, как решить эту задачу, не переписывая всю конфигурацию с нуля.
Наиболее стабильным и «щадящим» для старой конфигурации способом является использование stunnel. Это специальное программное обеспечение, которое берет на себя всю нагрузку по шифрованию.
stunnel на тот же сервер, где запущена ваша 1С 8.1.stunnel так, чтобы он слушал локальный порт (например, 8080) и перенаправлял входящие запросы на целевой HTTPS-адрес сервиса.1С измените адрес точки подключения в объекте WSОпределения. Вместо реального HTTPS-адреса укажите локальный адрес: http://localhost:8080.Для 1С 8.1 такое соединение будет выглядеть как обычный незащищенный HTTP-запрос, что позволит обойти ограничение платформы. Stunnel же, выступая посредником, выполнит полноценное «рукопожатие» TLS с удаленным сервером и обеспечит безопасность передачи данных.
Если вам требуется отправить прямой запрос к API (например, к сервису самозанятых), можно воспользоваться системным объектом WinHttp.WinHttpRequest.5.1. Однако здесь важно учитывать, что этот объект работает через настройки операционной системы, поэтому на крайне устаревших ОС (например, Windows Server 2003) он также может не заработать.
Для корректной работы необходимо отключить проверку сертификатов и настроить параметры перенаправления. Посмотрим, как это реализовать на примере кода:
WinHttp = Новый COMОбъект("WinHttp.WinHttpRequest.5.1");
WinHttp.Option(2, "utf-8"); // Установка кодировки
// Отключаем проверку сертификатов и включаем перенаправления через ScriptControl
Скрипт = Новый COMОбъект("MSScriptControl.ScriptControl");
Скрипт.language = "javascript";
Скрипт.AddObject("WinHttp", WinHttp);
// Флаг 13056 игнорирует ошибки сертификата
Скрипт.Eval("WinHttp.Option(4)=13056");
Скрипт.Eval("WinHttp.Option(6)=true");
Скрипт.Eval("WinHttp.Option(12)=true");
Важно помнить: при использовании WinHttp для работы с SOAP-сервисами, вам придется самостоятельно формировать XML-конверт (Envelope). Это более трудоемкая задача, чем использование встроенных механизмов WSПрокси, так как требует ручного управления заголовками, такими как SOAPAction.
Если есть возможность, мы рекомендуем рассмотреть обновление платформы хотя бы до 8.2 или 8.3. Это позволит использовать современные методы HTTPСоединение, которые поддерживают актуальные протоколы шифрования «из коробки».
При обновлении вы можете оставить конфигурацию в режиме совместимости. Это позволит:
Управляемые формы.JSON и HTTPS.Подводя итог: если ваша задача — быстрое «латание дыр» без изменения версии платформы, используйте stunnel. Если же вы хотите избежать проблем с безопасностью в будущем, планируйте переход на более современную версию 1С.