Перевод информационных баз 1С на работу через протокол HTTPS — это стандартное требование современной безопасности. Однако при переходе с незащищенного соединения HTTP на защищенное программисты часто сталкиваются с тем, что привычные механизмы работы с веб-сервисами (WS-ссылки) перестают функционировать, выдавая ошибки аутентификации или ошибки установки защищенного соединения. В этой статье мы подробно разберем, как правильно изменить код инициализации WSОпределения, и какие настройки сервера необходимо проверить, чтобы восстановить работоспособность обмена.
Рассмотрим стандартную ситуацию. Ранее подключение к веб-сервису осуществлялось по обычному протоколу HTTP, и код выглядел следующим образом:
Определение = Новый WSОпределения("http://178.234.00.97/dobr/ws/GetZakazNaryd.1cws?wsdl", "Логин", "Пароль", , 50);
Соединение = Новый WSПрокси(Определение, "GetZakazNaryd", "GetZakazNaryd", "GetZakazNarydSoap");
При простом изменении протокола в строке URL на https:// система может выдать ошибку, так как 1С требуется явное указание на использование защищенного соединения. Проанализируем, как должен измениться код для работы с SSL. Для этого используется объект ЗащищенноеСоединениеOpenSSL.
Разберем обновленный пример кода:
// Создаем объект защищенного соединения
// Параметры по умолчанию используют системные сертификаты ОС
SSL = Новый ЗащищенноеСоединениеOpenSSL();
// Передаем объект SSL в конструктор WSОпределения последним параметром
Определение = Новый WSОпределения("https://178.234.00.97/dobr/ws/GetZakazNaryd.1cws?wsdl", "Логин", "Пароль", , 50, SSL);
// Создаем прокси-объект для вызова методов сервиса
Соединение = Новый WSПрокси(Определение, "GetZakazNaryd", "GetZakazNaryd", "GetZakazNarydSoap");
Важно помнить, что в мобильной платформе или при работе на сервере под управлением Linux состав доступных сертификатов может отличаться, что требует дополнительной настройки параметров объекта ЗащищенноеСоединениеOpenSSL.
Выясним причину, почему даже при добавлении ЗащищенноеСоединениеOpenSSL может возникать ошибка аутентификации или отказа в соединении. Часто системные администраторы используют самоподписанные сертификаты (Self-signed) для внутренних нужд. Платформа 1С по умолчанию доверяет только сертификатам, выданным доверенными центрами сертификации.
Если сертификат вашего сервера не является публично доверенным, мы можем применить следующие шаги:
Проанализируем ситуацию, когда сертификат валиден, но 1С всё равно возвращает «Ошибку аутентификации». Проблема часто кроется в настройках самого веб-сервера (IIS или Apache), через который опубликована база.
Для веб-сервера IIS:
WSОпределения.Для веб-сервера Apache:
Проанализируйте конфигурационный файл httpd.conf. Убедитесь, что модули mod_ssl загружены и параметры AllowOverride All позволяют платформе 1С управлять авторизацией через файл публикации default.vrd.
Рассмотрим еще один важный аспект — передачу учетных данных. Иногда указания логина и пароля только в WSОпределения недостаточно. Посмотрим на пример более надежной инициализации, когда данные дублируются и в WSПрокси:
SSL = Новый ЗащищенноеСоединениеOpenSSL();
АдресWSDL = "https://178.234.00.97/dobr/ws/GetZakazNaryd.1cws?wsdl";
ИмяПользователя = "Логин";
ПарольПользователя = "Пароль";
Определение = Новый WSОпределения(АдресWSDL, ИмяПользователя, ПарольПользователя, , 50, SSL);
// Явная передача логина и пароля в прокси-объект
Соединение = Новый WSПрокси(Определение, "GetZakazNaryd", "GetZakazNaryd", "GetZakazNarydSoap", , , , ИмяПользователя, ПарольПользователя);
Также следует проверить файл default.vrd. При переходе на HTTPS иногда полезно выполнить перепубликацию информационной базы через Конфигуратор (Администрирование -> Публикация на веб-сервере), чтобы убедиться, что все параметры путей и модулей обновлены в соответствии с новыми настройками безопасности.
Выясним причину возможных сбоев на уровне протоколов. Современные серверы часто отключают устаревшие протоколы TLS 1.0 и TLS 1.1, оставляя только TLS 1.2 или 1.3. Если ваша версия платформы 1С сильно устарела, она может не поддерживать TLS 1.2, что приведет к невозможности установить соединение.
Рекомендации по диагностике:
https://.../ws/GetZakazNaryd.1cws?wsdl через обычный браузер на том же устройстве. Если браузер запрашивает логин и пароль и после их ввода отображает XML-структуру — проблема в коде 1С или настройках ЗащищенноеСоединениеOpenSSL.Следуя этим шагам и используя объект ЗащищенноеСоединениеOpenSSL, вы сможете успешно перевести ваши интеграции на защищенный протокол HTTPS, обеспечив безопасность данных без потери функциональности.