При выполнении интеграции типовых конфигураций (например, 1С:Управление торговлей 11) с веб-сервисами Сбербанка разработчики часто сталкиваются с критической ошибкой: «Удаленный узел не прошел проверку». Эта проблема возникает на этапе обращения к объекту WSСсылка или при попытке вызвать методы веб-сервиса через защищенное соединение. Проанализируем причины этой ситуации и разберем по шагам способы её решения.
Основным источником проблемы является использование Сбербанком SSL-сертификатов, выданных Национальным удостоверяющим центром (Минцифры России). В отличие от международных сертификатов, российские корневые сертификаты по умолчанию не включены в доверенные хранилища большинства операционных систем (Windows, дистрибутивы Linux) и браузеров. Платформа 1С при установке защищенного TLS-соединения полагается на системные механизмы проверки цепочки доверия. Если система не «знает» издателя сертификата, проверка подлинности узла проваливается, и соединение разрывается.
Дополнительная сложность заключается в использовании объекта WSСсылка в дереве метаданных. Этот объект является статическим и обладает жесткими настройками безопасности. В отличие от программного создания соединения, при использовании WSСсылка крайне сложно (а зачастую невозможно) гибко управлять параметрами валидации сертификата в коде, что делает настройку окружения сервера критически важной.
Рассмотрим самый правильный с точки зрения безопасности метод — добавление сертификатов Минцифры в доверенное хранилище сервера, на котором работает 1С. Это позволит платформе успешно проходить проверку SSL без изменения программного кода.
ragent) обычно запускается под специальной сервисной учетной записью.Если работа через WSСсылка продолжает вызывать ошибки или требуется более гибкая настройка, проанализируем альтернативный вариант — переход на использование объекта HTTPСоединение. Этот метод позволяет программно управлять процессом проверки сертификатов. Рассмотрим пример кода для создания защищенного соединения:
// Создаем параметры защиты
СертификатыДляПроверки = Новый Массив;
// Если необходимо, здесь можно добавить конкретные сертификаты из файлов
Защита = Новый ЗащищенноеСоединениеOpenSSL(Неопределено, Новый ВалидацияСертификатовПеречисление.НеПроверять);
// Создаем соединение с сервером Сбербанка
Соединение = Новый HTTPСоединение("имя_хоста_сбербанка", 443, , , , 30, Защита);
// Далее формируем HTTPЗапрос и получаем ответ
Запрос = Новый HTTPЗапрос("/путь_к_api/");
Ответ = Соединение.Получить(Запрос);
Использование параметра ВалидацияСертификатовПеречисление.НеПроверять позволяет полностью игнорировать ошибки проверки цепочки сертификатов. Внимание: этот метод рекомендуется использовать только для отладки или в закрытых контурах, так как он снижает уровень безопасности соединения.
Если ваш сервер 1С работает под управлением Linux, системное хранилище Windows недоступно. В этом случае разберем алгоритм настройки файла сертификатов платформы:
cacert.pem, который использует 1С. Обычно он располагается в каталоге установленной платформы в папке conf.Посмотрим на архитектуру взаимодействия. Сбербанк предлагает как SOAP (через WSDL), так и REST API. Работа с REST API через HTTPСоединение и формат данных JSON в современных версиях платформы 8.3 реализована гораздо проще и стабильнее. Если вы только начинаете интеграцию, рекомендуем рассмотреть именно REST-интерфейс, так как он позволяет избежать многих проблем с типизацией данных и сложной настройкой объектов метаданных 1С.
Подведем итог: для успешной работы с эквайрингом Сбербанка в 1С необходимо либо обеспечить доверие операционной системы к российским центрам сертификации, либо программно настроить объект ЗащищенноеСоединениеOpenSSL, минуя строгую проверку цепочки сертификатов.