Как настроить WS-ссылку при переходе на HTTPS-подключение в 1С?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Перевод информационных баз 1С на работу через протокол HTTPS — это стандартное требование современной безопасности. Однако при переходе с незащищенного соединения HTTP на защищенное программисты часто сталкиваются с тем, что привычные механизмы работы с веб-сервисами (WS-ссылки) перестают функционировать, выдавая ошибки аутентификации или ошибки установки защищенного соединения. В этой статье мы подробно разберем, как правильно изменить код инициализации WSОпределения, и какие настройки сервера необходимо проверить, чтобы восстановить работоспособность обмена.

Инициализация защищенного соединения в коде 1С

Рассмотрим стандартную ситуацию. Ранее подключение к веб-сервису осуществлялось по обычному протоколу 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. Игнорирование проверки сертификата: В целях разработки (но не рекомендуется для продакшена) можно инициализировать соединение так, чтобы 1С не проверяла валидность сертификата. Однако в последних версиях платформы 1С:Предприятие рекомендуется явно указывать сертификаты в хранилище.
  2. Установка сертификата в хранилище ОС: Сертификат сервера (файл .cer или .crt) должен быть установлен в раздел «Доверенные корневые центры сертификации» на том компьютере, где выполняется код 1С (на сервере 1С или на клиентском ПК).
  3. Специфика мобильных устройств: При использовании мобильного приложения 1С самоподписанный сертификат должен быть установлен в системное хранилище Android или iOS вручную.

Настройка веб-сервера (IIS или Apache)

Проанализируем ситуацию, когда сертификат валиден, но 1С всё равно возвращает «Ошибку аутентификации». Проблема часто кроется в настройках самого веб-сервера (IIS или Apache), через который опубликована база.

Для веб-сервера IIS:

Для веб-сервера 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 и диагностика

Выясним причину возможных сбоев на уровне протоколов. Современные серверы часто отключают устаревшие протоколы TLS 1.0 и TLS 1.1, оставляя только TLS 1.2 или 1.3. Если ваша версия платформы 1С сильно устарела, она может не поддерживать TLS 1.2, что приведет к невозможности установить соединение.

Рекомендации по диагностике:

  1. Попробуйте открыть адрес https://.../ws/GetZakazNaryd.1cws?wsdl через обычный браузер на том же устройстве. Если браузер запрашивает логин и пароль и после их ввода отображает XML-структуру — проблема в коде 1С или настройках ЗащищенноеСоединениеOpenSSL.
  2. Если браузер выдает предупреждение о безопасности («Подключение не защищено») — проблема в сертификате.
  3. Если браузер выдает ошибку 401 или 403 даже после ввода верных данных — проблема в правах доступа веб-сервера или настройках публикации 1С.

Следуя этим шагам и используя объект ЗащищенноеСоединениеOpenSSL, вы сможете успешно перевести ваши интеграции на защищенный протокол HTTPS, обеспечив безопасность данных без потери функциональности.

← На главную