Сбои в работе интеграционных веб-сервисов — частая проблема, с которой сталкиваются администраторы и программисты систем на базе 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>
В этой статье мы подробно проанализируем техническую суть этой неисправности, выясним истинные причины её возникновения и рассмотрим пошаговые инструкции по её полному устранению.
Для того чтобы понять природу ошибки, рассмотрим механизм взаимодействия платформы «1С:Предприятие» со сторонними веб-сервисами. Когда пользователь нажимает кнопку «Заполнить по ИНН», база данных формирует защищенный SOAP- или REST-запрос по протоколу HTTPS к серверам компании 1С (в частности, к ресурсу api.orgregister.1c.ru).
Безопасность такого соединения гарантируется протоколами шифрования SSL/TLS. Чтобы соединение установилось, инициатор запроса (платформа 1С) должен проверить подлинность SSL-сертификата удаленного сервера с помощью встроенной цепочки доверия, на вершине которой находятся корневые сертификаты удостоверяющих центров (CA).
Обработка SSL-сертификатов в платформе 1С зависит от версии используемой платформы и режима совместимости конфигурации:
cacert.pem, расположенный в каталоге установленной платформы. К этой категории как раз и относятся конфигурации УПП 1.3 и КА 1.1.Когда на серверах компании 1С происходит плановая или внеочередная смена SSL-сертификата (например, переход на новый центр сертификации DigiCert, GlobalSign или Let's Encrypt), старый корневой сертификат теряет актуальность. Платформа 1С пытается проверить новое защищенное соединение, обращается к локальному файлу cacert.pem, не находит там соответствующего доверенного центра и блокирует соединение. Из-за некорректного закрытия сессии или проксирования запросов на стороне серверов 1С программа часто возвращает пользователю стандартную ошибку веб-сервера: 502 - Bad Gateway или «Удаленный узел не прошел проверку».
Рассмотрим подробнее три основных способа решения этой проблемы.
Этот способ является самым простым и надежным. Нам потребуется заменить устаревший файл сертификатов актуальной версией, подготовленной специалистами 1С или экспортированной из независимых доверенных источников (например, из репозитория curl).
Выполним процедуру по шагам:
1C:Enterprise 8.3 Server Agent).C:\Program Files (x86)\1cv8\[Номер_версии_платформы]\bin\C:\Program Files\1cv8\[Номер_версии_платформы]\bin\cacert.pem.cacert.pem.bak.cacert.pem с официального портала 1С:ИТС (раздел технологической поддержки) или из доверенного источника.cacert.pem в каталог bin взамен старого.Если по каким-то причинам вы не хотите полностью менять файл cacert.pem (например, в него ранее уже были вручную добавлены самоподписанные сертификаты вашей компании для обмена с другими внутренними сервисами), мы можем отредактировать его вручную.
Проанализируем структуру файла cacert.pem. Это обычный текстовый файл, содержащий последовательность блоков сертификатов в кодировке Base64, ограниченных специальными тегами. Типичный блок выглядит следующим образом:
Certificate Name
================
-----BEGIN CERTIFICATE-----
MIIEkjCCA3qgAwIBAgITBn+dB0ZGJgskRxIIAAAAAA90TANBgkqhkiG9w0BAQsF
ADCBizELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcT
... (множество строк зашифрованного текста) ...
Y0S6S8YOf66Vep7W8L8Z9Jm+b1uM6KxR0W1m0CiwXN56gXo/
-----END CERTIFICATE-----
Для добавления нового сертификата выполним следующие действия:
.cer или .crt с кодировкой Base64.-----BEGIN CERTIFICATE----- и -----END CERTIFICATE-----.cacert.pem в каталоге платформы 1С с правами администратора.Для упрощения этой рутинной процедуры фирма «1С» периодически выпускает сервисные внешние обработки (например, digicert.epf). Этот метод избавляет системного администратора от необходимости вручную искать каталоги установки платформы на сервере и рабочих станциях.
Принцип работы такой обработки предельно прост:
cacert.pem.Использование обработки особенно эффективно в крупных компаниях с большим количеством серверов приложений 1С, так как позволяет автоматизировать процесс силами штатных программистов.
Очень часто администраторы совершают критическую ошибку: обновляют файл 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. В этом случае операционная система просто не знает о существовании новых мировых центров сертификации.
Для решения этой проблемы системному администратору необходимо:
.sst или по отдельности.mmc, добавить оснастку «Сертификаты» для учетной записи компьютера).Рассмотренные выше способы устранения ошибки 502 через обновление сертификатов гарантированно решали проблему до определенного времени. Однако прогресс не стоит на месте, и компания 1С провела масштабную модернизацию своих веб-сервисов.
Старый протокол веб-сервиса (так называемый v7, работавший по адресу api.orgregister.1c.ru/orgregister/v7), который жестко зашит в старых релизах конфигураций УПП и КА 1.1, был окончательно выведен из эксплуатации и отключен на стороне компании 1С.
Поэтому в современных реалиях простое обновление файла cacert.pem может не решить проблему полностью, если ваша конфигурация УПП или КА не обновлялась несколько лет. Старый адрес сервиса просто возвращает ошибку на уровне веб-сервера. Чтобы восстановить работоспособность автозаполнения реквизитов по ИНН, необходимо выполнить одно из двух действий:
Мы подробно разобрали все аспекты возникновения и устранения ошибки 502 при работе с сервисом «1С:Контрагент». Своевременный контроль актуальности платформы, регулярное обновление корневых сертификатов шифрования и отслеживание изменений в API помогут вам поддерживать стабильную и бесперебойную работу вашей учетной системы.