Как решить проблему с проверкой SSL-сертификата при интеграции 1С с эквайрингом Сбербанка

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

При выполнении интеграции типовых конфигураций (например, 1С:Управление торговлей 11) с веб-сервисами Сбербанка разработчики часто сталкиваются с критической ошибкой: «Удаленный узел не прошел проверку». Эта проблема возникает на этапе обращения к объекту WSСсылка или при попытке вызвать методы веб-сервиса через защищенное соединение. Проанализируем причины этой ситуации и разберем по шагам способы её решения.

Выясним причину ошибки

Основным источником проблемы является использование Сбербанком SSL-сертификатов, выданных Национальным удостоверяющим центром (Минцифры России). В отличие от международных сертификатов, российские корневые сертификаты по умолчанию не включены в доверенные хранилища большинства операционных систем (Windows, дистрибутивы Linux) и браузеров. Платформа 1С при установке защищенного TLS-соединения полагается на системные механизмы проверки цепочки доверия. Если система не «знает» издателя сертификата, проверка подлинности узла проваливается, и соединение разрывается.

Дополнительная сложность заключается в использовании объекта WSСсылка в дереве метаданных. Этот объект является статическим и обладает жесткими настройками безопасности. В отличие от программного создания соединения, при использовании WSСсылка крайне сложно (а зачастую невозможно) гибко управлять параметрами валидации сертификата в коде, что делает настройку окружения сервера критически важной.

Способ 1: Установка сертификатов в операционную систему

Рассмотрим самый правильный с точки зрения безопасности метод — добавление сертификатов Минцифры в доверенное хранилище сервера, на котором работает 1С. Это позволит платформе успешно проходить проверку SSL без изменения программного кода.

  1. Загрузим необходимые сертификаты: Нам потребуются корневой и промежуточный сертификаты Национального удостоверяющего центра.
  2. Установим сертификаты в Windows: Если сервер 1С работает под управлением Windows, необходимо импортировать скачанные файлы в хранилище «Доверенные корневые центры сертификации». Важно выполнять установку для локального компьютера, а не только для текущего пользователя, так как служба 1С (ragent) обычно запускается под специальной сервисной учетной записью.
  3. Проверим права доступа: Убедимся, что учетная запись, под которой запущен сервер 1С:Предприятие, имеет права на чтение хранилища сертификатов.

Способ 2: Использование HTTPСоединение и ЗащищенноеСоединениеOpenSSL

Если работа через WSСсылка продолжает вызывать ошибки или требуется более гибкая настройка, проанализируем альтернативный вариант — переход на использование объекта HTTPСоединение. Этот метод позволяет программно управлять процессом проверки сертификатов. Рассмотрим пример кода для создания защищенного соединения:


// Создаем параметры защиты
СертификатыДляПроверки = Новый Массив;
// Если необходимо, здесь можно добавить конкретные сертификаты из файлов
Защита = Новый ЗащищенноеСоединениеOpenSSL(Неопределено, Новый ВалидацияСертификатовПеречисление.НеПроверять);

// Создаем соединение с сервером Сбербанка
Соединение = Новый HTTPСоединение("имя_хоста_сбербанка", 443, , , , 30, Защита);

// Далее формируем HTTPЗапрос и получаем ответ
Запрос = Новый HTTPЗапрос("/путь_к_api/");
Ответ = Соединение.Получить(Запрос);

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

Способ 3: Особенности работы на Linux

Если ваш сервер 1С работает под управлением Linux, системное хранилище Windows недоступно. В этом случае разберем алгоритм настройки файла сертификатов платформы:

  1. Найдем файл cacert.pem, который использует 1С. Обычно он располагается в каталоге установленной платформы в папке conf.
  2. Откроем этот файл текстовым редактором и добавим в его конец содержимое корневого и промежуточного сертификатов Минцифры в формате BASE64 (PEM).
  3. После сохранения изменений необходимо перезапустить службу сервера 1С:Предприятие.

Рекомендации по выбору API

Посмотрим на архитектуру взаимодействия. Сбербанк предлагает как SOAP (через WSDL), так и REST API. Работа с REST API через HTTPСоединение и формат данных JSON в современных версиях платформы 8.3 реализована гораздо проще и стабильнее. Если вы только начинаете интеграцию, рекомендуем рассмотреть именно REST-интерфейс, так как он позволяет избежать многих проблем с типизацией данных и сложной настройкой объектов метаданных 1С.

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

← На главную