К статье
Практический материал

Администрирование · 11 мин

Как отключить проверку сертификата в 1С

Как отключить проверку SSL-сертификата в 1С: настройка OpenSSL, параметры соединения, отладка веб-сервисов и HTTP-запросов. Риски и безопасные альтернативы.

При обращении из 1С к внешним сервисам по HTTPS платформа проверяет сертификат сервера: срок действия, цепочку доверия, соответствие имени хоста. Если проверка не проходит, соединение обрывается с ошибкой вида «Ошибка при проверке сертификата» или «Удаленный сертификат недействителен». В рабочих сценариях это защитный механизм, но при разработке, тестировании интеграций и работе с внутренними сервисами с самоподписанными сертификатами он мешает.

Отключить проверку можно на уровне кода встроенного языка — через объект защищённого соединения, который передаётся в HTTPСоединение, WS-прокси или определения веб-сервисов. Глобального переключателя «не проверять сертификаты» в настройках платформы нет, поэтому все действия выполняются либо в коде конфигурации, либо настройкой хранилища сертификатов операционной системы.

Прежде чем отключать проверку, важно понимать: самоподписанный или просроченный сертификат — это симптом. Правильное решение для продуктивного контура — установить корневой сертификат удостоверяющего центра в доверенные или перевыпустить сертификат сервера. Отключение проверки оставляйте как временную меру для отладки.

Когда отключение проверки оправдано, а когда нет

Отключение проверки сертификата уместно в ограниченном наборе ситуаций: локальная разработка с тестовым стендом, отладка обмена с внутренним сервисом, где сертификат выпущен собственным центром сертификации, временный запуск интеграции до момента выпуска нормального сертификата. Во всех этих случаях трафик не покидает контролируемый контур, и риск перехвата минимален.

Недопустимо отключать проверку в продуктивных обменах с внешними системами: банками, операторами ЭДО, государственными сервисами, платёжными шлюзами. Без проверки сертификата соединение уязвимо для атаки «человек посередине» — злоумышленник может подменить сервер и перехватить логины, токены и передаваемые данные. Если внешний сервис выдаёт ошибку сертификата, проблему решают обновлением хранилища доверенных корневых сертификатов, а не отключением проверки.

Как устроена проверка сертификата в платформе 1С

Защищённое соединение в 1С реализуется объектом OpenSSLSecureConnection (в русском синтаксисе — ЗащищенноеСоединениеOpenSSL). Конструктор объекта принимает два параметра: сертификат клиента (если требуется двусторонняя аутентификация) и сертификаты удостоверяющих центров для проверки сервера. Именно второй параметр управляет проверкой.

Если передать в конструктор объект СертификатыУдостоверяющихЦентровОС, платформа будет проверять сервер по системному хранилищу доверенных корневых сертификатов операционной системы. Если передать Неопределено или объект без фактической проверки — поведение зависит от версии платформы и контекста. Ключевой момент: поведение по умолчанию различается, поэтому явное указание параметров делает код предсказуемым.

Отключение проверки в HTTPСоединение

Для HTTP-запросов из кода 1С защищённое соединение создаётся явно и передаётся в конструктор HTTPСоединение. Чтобы отключить проверку сертификата сервера, создайте объект защищённого соединения без указания сертификатов удостоверяющих центров, либо с пустым набором — в зависимости от версии платформы поведение может отличаться, поэтому проверяйте на конкретном релизе.

Типовой фрагмент кода выглядит так:

ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL(

Неопределено,

Неопределено);

Соединение = Новый HTTPСоединение(

"test-server.local",

443,

,

,

,

,

ЗащищенноеСоединение);

Запрос = Новый HTTPЗапрос("/api/data");

Ответ = Соединение.Получить(Запрос);

bsl
ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL(Неопределено, Неопределено);
Соединение = Новый HTTPСоединение("test-server.local", 443, , , , , ЗащищенноеСоединение);

После выполнения запроса проверьте код ответа: значение 200 означает, что соединение установлено и сервер ответил. Если ошибка сертификата исчезла, но появилась ошибка 401 или 403 — TLS-слой работает, а проблема уже в авторизации, что является другой задачей.

Отключение проверки для веб-сервисов (WS-ссылки и WS-прокси)

При работе с SOAP веб-сервисами через WS-ссылки защищённое соединение задаётся при создании WS-прокси. В конструктор WSПрокси передаётся тот же объект ЗащищенноеСоединениеOpenSSL, что и для HTTP. Логика отключения проверки идентична: создаёте объект без указания хранилища доверенных центров и передаёте его параметром.

Если веб-сервис подключён как внешняя WS-ссылка в дереве конфигурации, прокси создаётся через менеджер ссылки: WSСсылки.ИмяСсылки.СоздатьWSПрокси(...). В этот метод также передаётся объект защищённого соединения. Убедитесь, что вы передаёте его именно при создании прокси, а не полагаетесь на настройки по умолчанию — иначе проверка останется включённой.

Для программного создания определения сервиса используется конструктор WSОпределения с указанием URL WSDL и защищённого соединения. Учтите: загрузка самого WSDL-описания тоже идёт по HTTPS, поэтому если сертификат недоверенный, ошибка возникнет уже на этапе создания определения, до вызова любого метода.

Альтернатива: добавить сертификат в доверенные вместо отключения проверки

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

В Windows это делается через оснастку certmgr.msc или командой certutil -addstore Root файл.cer с правами администратора. В Linux сертификат копируется в каталог доверенных (например, /usr/local/share/ca-certificates) с последующим обновлением хранилища командой update-ca-certificates. После этого в коде используется Новый СертификатыУдостоверяющихЦентровОС, и проверка проходит штатно.

Сравнение вариантов

Отключение проверки в коде

Быстро, подходит для отладки и тестовых стендов. Не подходит для продуктивных обменов с внешними системами из-за риска перехвата.

Добавление корневого сертификата в ОС

Безопасно и работает для всех приложений на машине. Требует прав администратора и повторной настройки при смене сервера.

Файл сертификатов УЦ в коде

Проверка по явно указанному файлу через СертификатыУдостоверяющихЦентровФайл. Гибко, но файл нужно доставлять на все рабочие места.

Где выполняется код: тонкости клиент-серверного режима

Частая причина «не работает отключение» — код выполняется не там, где ожидает разработчик. В клиент-серверной базе вызов веб-сервиса из серверной процедуры выполняется на сервере 1С, и хранилище сертификатов берётся с сервера. Тот же вызов из клиентской процедуры выполняется на рабочем месте пользователя. Если вы добавили сертификат на свою машину, а обмен работает на сервере — ошибка сохранится.

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

Проверка результата и типичные ошибки

После изменений выполните тестовый вызов и зафиксируйте результат. Признак успеха — HTTP-код 200 или корректный SOAP-ответ без исключений. Если возникает ошибка «Сертификат не доверенный» даже после отключения проверки, убедитесь, что объект защищённого соединения действительно передан в конструктор соединения, а не создан, но не использован.

Типичные ошибки
01
Создали ЗащищенноеСоединениеOpenSSL, но не передали его в HTTPСоединение — проверка осталась включённой, ошибка повторяется.
02
Настроили хранилище сертификатов на клиенте, а обмен выполняется на сервере 1С — ошибка сохраняется.
03
Отключили проверку в продуктивном обмене с внешним сервисом и забыли вернуть — соединение осталось уязвимым.
04
Путают ошибку сертификата с ошибкой авторизации: 401/403 — это уже не TLS, а учётные данные.
Контрольные точки

Как проверить результат

Код ответа на тестовый запрос
Норма

200 или ожидаемый бизнес-ответ

Тревожный признак

Исключение с текстом про сертификат или TLS

Место выполнения кода
Норма

Сертификаты настроены на том узле, где исполняется код

Тревожный признак

Настройки сделаны на другой машине

Поведение в продуктиве
Норма

Проверка включена, корневой сертификат в доверенных

Тревожный признак

Проверка отключена в рабочем обмене

Итог

Что важно запомнить

Проверка сертификата отключается объектом ЗащищенноеСоединениеOpenSSL без указания доверенных УЦ, переданным в HTTPСоединение или WSПрокси. Это приемлемо только для отладки и внутренних контуров. Для продуктивных обменов добавляйте корневой сертификат в доверенные на том узле, где выполняется код.

Частые вопросы

Можно ли отключить проверку сертификата глобально для всей базы 1С?

Штатной глобальной настройки нет. Проверка управляется в каждом месте кода, где создаётся защищённое соединение. Практический подход — вынести создание объекта соединения в одну общую функцию и вызывать её из всех точек обмена, тогда поведение меняется централизованно.

Ошибка сертификата появилась внезапно, хотя обмен годами работал. Что случилось?

Чаще всего истёк срок действия сертификата сервера или корневого сертификата в хранилище, либо владелец сервиса сменил удостоверяющий центр. Проверьте срок действия сертификата сервера и обновите корневые сертификаты ОС. Отключение проверки здесь — не решение, а маскировка проблемы.

Работает ли отключение проверки на мобильной платформе 1С?

Механика та же — через объект защищённого соединения. Однако на мобильных устройствах сложнее управлять системным хранилищем сертификатов, поэтому для мобильных сценариев предпочтительнее выпустить нормальный сертификат от публичного или корпоративного УЦ.

Чем отличается СертификатыУдостоверяющихЦентровОС от СертификатыУдостоверяющихЦентровФайл?

Первый объект использует системное хранилище доверенных корневых сертификатов операционной системы. Второй загружает сертификаты из указанного файла в формате PEM — это удобно, когда нужно доверять конкретному корпоративному УЦ без изменения настроек ОС, но файл придётся распространять на все узлы, где выполняется код.

Опасно ли оставить отключённую проверку в тестовой базе?

В изолированном тестовом контуре без реальных данных и доступа извне риск невелик. Опасность появляется, если тестовая база ходит в реальные внешние сервисы или если код из теста мигрирует в продуктив вместе с отключённой проверкой — такое случается при переносе доработок, поэтому помечайте подобные места в коде явными комментариями.

Что делать, если после отключения проверки всё равно ошибка соединения?

Значит, причина не в сертификате. Проверяйте доступность порта, настройки прокси-сервера в 1С (файл inetcfg.xml или параметры прокси в коде), корректность URL и учётные данные. Ошибки 401/403 указывают на авторизацию, 404 — на неверный путь ресурса, таймауты — на сетевые проблемы или файрвол.