При настройке интеграции 1С с Telegram через механизм Webhook многие разработчики сталкиваются с ошибкой SSL routines:tls_process_server_certificate:certificate verify failed. Эта проблема возникает из-за специфики проверки сертификатов серверами Telegram. Давайте разберем, почему это происходит и как правильно организовать защищенное соединение.
Основная причина ошибки заключается в использовании самоподписанных SSL-сертификатов. Telegram — это глобальный облачный сервис, который при отправке запроса к вашему серверу проводит строгую проверку безопасности. Он доверяет только тем сертификатам, которые выданы официальными удостоверяющими центрами (CA), входящими в доверенные списки систем.
Когда вы используете самоподписанный сертификат, ваш сервер не может предоставить Telegram «цепочку доверия». В мобильном клиенте 1С вы можете вручную добавить такой сертификат в доверенные, но сделать это на стороне серверов Telegram невозможно. Именно поэтому попытка отправить setWebhook с использованием «левого» сертификата неизбежно приведет к сбою при первом же обращении бота.
Для корректной работы вам потребуется валидный сертификат, выданный на доменное имя, которое смотрит на ваш публичный IP-адрес. Использовать IP-адрес напрямую для вебхуков в Telegram не рекомендуется, так как это затрудняет процесс подтверждения владения доменом и получения SSL.
Вместо покупки платных сертификатов мы рекомендуем использовать решение Let's Encrypt. Это бесплатный удостоверяющий центр, предоставляющий доверенные SSL-сертификаты. Процесс получения автоматизируется с помощью инструментов вроде Certbot. Полученный сертификат будет распознаваться серверами Telegram как полностью легитимный.
Одним из самых надежных и архитектурно правильных методов интеграции является использование веб-сервера (Nginx или Apache) в качестве «щита» перед вашей базой 1С. Рассмотрим, как это работает по шагам:
Nginx или Apache на сервере, доступном извне. Привяжите к нему доменное имя и установите валидный SSL-сертификат (например, через Certbot)./telega), перенаправлялись на внутренний IP-адрес вашей 1С.Таким образом, для Telegram ваш сервер будет выглядеть как надежный HTTPS-ресурс, а внутри компании вы избавитесь от необходимости «прикручивать» сложные сертификаты непосредственно к 1С.
Приведем пример того, как логически должен выглядеть конфиг вашего прокси-сервера:
location /telega {
proxy_pass http://192.168.1.10/имя_базы/hs/webhook_api;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
В данном примере запрос, приходящий на https://yourdomain.com/telega, будет прозрачно передан в 1С по адресу http://192.168.1.10/имя_базы/hs/webhook_api. Это позволяет скрыть внутреннюю структуру сети и обеспечить стабильную работу Webhook.
FQDN (Fully Qualified Domain Name).setWebhook с умом. Если вы используете доверенный сертификат (не самоподписанный), параметр certificate в запросе setWebhook можно не передавать вовсе — Telegram сам проверит SSL через стандартные протоколы.Nginx/Apache), а обработка данных — задача вашего кода 1С. Разделение этих зон ответственности делает систему более гибкой и легкой в поддержке.Применяя эти подходы, вы обеспечите надежное и безопасное взаимодействие между вашей учетной системой и Telegram, исключив ошибки проверки SSL-сертификатов.