Как исправить ошибку 502 Bad Gateway при работе сервиса 1С:Контрагент

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

Сбои в работе интеграционных веб-сервисов — частая проблема, с которой сталкиваются администраторы и программисты систем на базе 1С. Одним из наиболее популярных сервисов является «1С:Контрагент», позволяющий автоматически заполнять реквизиты организаций по ИНН. Однако пользователи устаревших конфигураций, таких как «Управление производственным предприятием» (УПП) и «Комплексная автоматизация 1.1» (КА), периодически сталкиваются с внезапным прекращением работы этого механизма. При попытке заполнения программа выдает ошибку удаленного сервера:


<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<soap:Fault>
<faultcode>soap:Server</faultcode>
<faultstring>502 - Bad Gateway</faultstring>
</soap:Fault>
</soap:Body>
</soap:Envelope>

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

Техническая суть проблемы: почему возникает ошибка 502

Для того чтобы понять природу ошибки, рассмотрим механизм взаимодействия платформы «1С:Предприятие» со сторонними веб-сервисами. Когда пользователь нажимает кнопку «Заполнить по ИНН», база данных формирует защищенный SOAP- или REST-запрос по протоколу HTTPS к серверам компании 1С (в частности, к ресурсу api.orgregister.1c.ru).

Безопасность такого соединения гарантируется протоколами шифрования SSL/TLS. Чтобы соединение установилось, инициатор запроса (платформа 1С) должен проверить подлинность SSL-сертификата удаленного сервера с помощью встроенной цепочки доверия, на вершине которой находятся корневые сертификаты удостоверяющих центров (CA).

Обработка SSL-сертификатов в платформе 1С зависит от версии используемой платформы и режима совместимости конфигурации:

  1. Современные платформы (8.3.8 и выше): по умолчанию обращаются к системному хранилищу сертификатов операционной системы. Если ОС регулярно обновляется, то новые корневые сертификаты устанавливаются автоматически, и соединение проходит без ошибок.
  2. Устаревшие платформы (8.3.7 и ниже), а также конфигурации в режиме совместимости с ними: используют собственное изолированное файловое хранилище сертификатов. Таким хранилищем выступает текстовый файл cacert.pem, расположенный в каталоге установленной платформы. К этой категории как раз и относятся конфигурации УПП 1.3 и КА 1.1.

Когда на серверах компании 1С происходит плановая или внеочередная смена SSL-сертификата (например, переход на новый центр сертификации DigiCert, GlobalSign или Let's Encrypt), старый корневой сертификат теряет актуальность. Платформа 1С пытается проверить новое защищенное соединение, обращается к локальному файлу cacert.pem, не находит там соответствующего доверенного центра и блокирует соединение. Из-за некорректного закрытия сессии или проксирования запросов на стороне серверов 1С программа часто возвращает пользователю стандартную ошибку веб-сервера: 502 - Bad Gateway или «Удаленный узел не прошел проверку».

Рассмотрим подробнее три основных способа решения этой проблемы.

Способ 1. Полная замена файла cacert.pem (Рекомендуемый)

Этот способ является самым простым и надежным. Нам потребуется заменить устаревший файл сертификатов актуальной версией, подготовленной специалистами 1С или экспортированной из независимых доверенных источников (например, из репозитория curl).

Выполним процедуру по шагам:

  1. Выясним точную версию платформы «1С:Предприятие», под которой запускается информационная база. Сделать это можно в меню «Справка» — «О программе».
  2. Завершим работу всех активных пользователей в информационной базе. Если используется клиент-серверный вариант работы, рекомендуется временно остановить службу сервера 1С:Предприятия (1C:Enterprise 8.3 Server Agent).
  3. Перейдем в каталог установки платформы на компьютере пользователя (для файловой базы) или на сервере приложений (для клиент-серверной базы). По умолчанию в ОС Windows пути выглядят следующим образом:
    • Для 32-битной платформы: C:\Program Files (x86)\1cv8\[Номер_версии_платформы]\bin\
    • Для 64-битной платформы: C:\Program Files\1cv8\[Номер_версии_платформы]\bin\
  4. Найдем в этой папке файл с именем cacert.pem.
  5. Перед внесением любых изменений обязательно сделаем резервную копию существующего файла, переименовав его, например, в cacert.pem.bak.
  6. Скачаем актуальный файл cacert.pem с официального портала 1С:ИТС (раздел технологической поддержки) или из доверенного источника.
  7. Скопируем новый файл cacert.pem в каталог bin взамен старого.
  8. Если база работает в клиент-серверном режиме, запустим службу сервера 1С заново. Перезагрузка компьютера обычно не требуется.

Способ 2. Ручное добавление сертификата в существующий файл

Если по каким-то причинам вы не хотите полностью менять файл cacert.pem (например, в него ранее уже были вручную добавлены самоподписанные сертификаты вашей компании для обмена с другими внутренними сервисами), мы можем отредактировать его вручную.

Проанализируем структуру файла cacert.pem. Это обычный текстовый файл, содержащий последовательность блоков сертификатов в кодировке Base64, ограниченных специальными тегами. Типичный блок выглядит следующим образом:


Certificate Name
================
-----BEGIN CERTIFICATE-----
MIIEkjCCA3qgAwIBAgITBn+dB0ZGJgskRxIIAAAAAA90TANBgkqhkiG9w0BAQsF
ADCBizELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcT
... (множество строк зашифрованного текста) ...
Y0S6S8YOf66Vep7W8L8Z9Jm+b1uM6KxR0W1m0CiwXN56gXo/
-----END CERTIFICATE-----

Для добавления нового сертификата выполним следующие действия:

  1. Скачаем необходимый корневой сертификат (например, новый сертификат удостоверяющего центра DigiCert или Минцифры РФ, если речь идет о переходе на отечественные сертификаты) в формате .cer или .crt с кодировкой Base64.
  2. Откроем скачанный файл сертификата с помощью обычного текстового редактора (например, «Блокнот» или Notepad++).
  3. Скопируем все содержимое файла, включая строки -----BEGIN CERTIFICATE----- и -----END CERTIFICATE-----.
  4. Откроем оригинальный файл cacert.pem в каталоге платформы 1С с правами администратора.
  5. Перейдем в самый конец документа, сделаем перенос строки и вставим скопированный блок данных.
  6. Сохраним изменения в файле и перезапустим платформу (или службу сервера).

Способ 3. Использование автоматизированной внешней обработки

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

Принцип работы такой обработки предельно прост:

  1. Администратор запускает обработку в режиме «1С:Предприятие» через меню «Файл» — «Открыть».
  2. Обработка программно определяет путь к текущему запущенному исполняемому файлу платформы 1С.
  3. Она автоматически находит сопутствующий файл cacert.pem.
  4. Обработка скачивает актуальные корневые сертификаты с серверов обновлений 1С и сама корректно дописывает их в конец локального файла хранилища.

Использование обработки особенно эффективно в крупных компаниях с большим количеством серверов приложений 1С, так как позволяет автоматизировать процесс силами штатных программистов.

Особенности для клиент-серверного режима (SQL)

Очень часто администраторы совершают критическую ошибку: обновляют файл cacert.pem на своем локальном компьютере, запускают базу в режиме тонкого или толстого клиента, но сервис «1С:Контрагент» все равно продолжает выдавать ошибку 502.

Выясним причину такого поведения. В клиент-серверном варианте работы базы данных практически все ключевые экспортные процедуры (включая отправку HTTPS-запросов к внешним API) выполняются на стороне сервера приложений 1С в контексте рабочих процессов rphost.exe. Это означает, что проверка SSL-сертификатов выполняется именно сервером, а не вашим локальным компьютером.

Правило: в клиент-серверных базах файл cacert.pem необходимо обновлять на том физическом сервере (или серверах, если собран кластер), где запущена служба 1С:Предприятия. Заменять файл нужно в каталоге той версии платформы, под которой в данный момент функционирует кластер.

Дополнительный фактор риска: устаревшие операционные системы

Иногда замена файла cacert.pem не приносит желаемого результата, либо проблема возникает на более новых версиях платформ (8.3.9 и выше). В этом случае необходимо проанализировать версию операционной системы, на которой развернут сервер 1С или рабочие станции пользователей.

Если сервер работает под управлением устаревших ОС, таких как Windows Server 2008 R2, Windows Server 2012 или Windows 7, встроенные механизмы обновления корневых сертификатов Windows могут быть отключены или заблокированы из-за прекращения официальной поддержки Microsoft. В этом случае операционная система просто не знает о существовании новых мировых центров сертификации.

Для решения этой проблемы системному администратору необходимо:

  1. Скачать актуальные корневые сертификаты в формате .sst или по отдельности.
  2. Открыть оснастку управления сертификатами компьютера (выполнить команду mmc, добавить оснастку «Сертификаты» для учетной записи компьютера).
  3. Импортировать скачанные сертификаты в раздел «Доверенные корневые центры сертификации» (Trusted Root Certification Authorities).

Важное изменение: переход на новый API «1С:Контрагента»

Рассмотренные выше способы устранения ошибки 502 через обновление сертификатов гарантированно решали проблему до определенного времени. Однако прогресс не стоит на месте, и компания 1С провела масштабную модернизацию своих веб-сервисов.

Старый протокол веб-сервиса (так называемый v7, работавший по адресу api.orgregister.1c.ru/orgregister/v7), который жестко зашит в старых релизах конфигураций УПП и КА 1.1, был окончательно выведен из эксплуатации и отключен на стороне компании 1С.

Поэтому в современных реалиях простое обновление файла cacert.pem может не решить проблему полностью, если ваша конфигурация УПП или КА не обновлялась несколько лет. Старый адрес сервиса просто возвращает ошибку на уровне веб-сервера. Чтобы восстановить работоспособность автозаполнения реквизитов по ИНН, необходимо выполнить одно из двух действий:

  1. Обновить конфигурацию: установить актуальный релиз УПП или КА. Разработчики 1С перевели механизмы интеграции на новые методы REST API, работающие через обновленную Библиотеку интернет-поддержки (БИП).
  2. Использовать сторонние расширения или доработки: если ваша база данных сильно кастомизирована и её обновление невозможно или экономически нецелесообразно, необходимо пригласить программиста 1С для интеграции специального расширения. Это расширение перенаправит вызовы процедур автозаполнения со старого отключенного веб-сервиса v7 на новые актуальные методы API «1С:Контрагента».

Мы подробно разобрали все аспекты возникновения и устранения ошибки 502 при работе с сервисом «1С:Контрагент». Своевременный контроль актуальности платформы, регулярное обновление корневых сертификатов шифрования и отслеживание изменений в API помогут вам поддерживать стабильную и бесперебойную работу вашей учетной системы.

← На главную