Почему возникают ошибки SSL при настройке вебхуков Telegram для 1С и как их устранить?

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

При настройке интеграции 1С с Telegram через механизм Webhook многие разработчики сталкиваются с ошибкой SSL routines:tls_process_server_certificate:certificate verify failed. Эта проблема возникает из-за специфики проверки сертификатов серверами Telegram. Давайте разберем, почему это происходит и как правильно организовать защищенное соединение.

Суть проблемы: самоподписанные сертификаты

Основная причина ошибки заключается в использовании самоподписанных SSL-сертификатов. Telegram — это глобальный облачный сервис, который при отправке запроса к вашему серверу проводит строгую проверку безопасности. Он доверяет только тем сертификатам, которые выданы официальными удостоверяющими центрами (CA), входящими в доверенные списки систем.

Когда вы используете самоподписанный сертификат, ваш сервер не может предоставить Telegram «цепочку доверия». В мобильном клиенте 1С вы можете вручную добавить такой сертификат в доверенные, но сделать это на стороне серверов Telegram невозможно. Именно поэтому попытка отправить setWebhook с использованием «левого» сертификата неизбежно приведет к сбою при первом же обращении бота.

Решение 1: Использование доверенного SSL-сертификата

Для корректной работы вам потребуется валидный сертификат, выданный на доменное имя, которое смотрит на ваш публичный IP-адрес. Использовать IP-адрес напрямую для вебхуков в Telegram не рекомендуется, так как это затрудняет процесс подтверждения владения доменом и получения SSL.

Вместо покупки платных сертификатов мы рекомендуем использовать решение Let's Encrypt. Это бесплатный удостоверяющий центр, предоставляющий доверенные SSL-сертификаты. Процесс получения автоматизируется с помощью инструментов вроде Certbot. Полученный сертификат будет распознаваться серверами Telegram как полностью легитимный.

Решение 2: Настройка обратного проксирования (Reverse Proxy)

Одним из самых надежных и архитектурно правильных методов интеграции является использование веб-сервера (Nginx или Apache) в качестве «щита» перед вашей базой 1С. Рассмотрим, как это работает по шагам:

  1. Настройка веб-сервера: Установите Nginx или Apache на сервере, доступном извне. Привяжите к нему доменное имя и установите валидный SSL-сертификат (например, через Certbot).
  2. Проксирование запросов: Настройте веб-сервер так, чтобы все входящие HTTPS-запросы, поступающие на определенный путь (например, /telega), перенаправлялись на внутренний IP-адрес вашей 1С.
  3. Безопасность внутри сети: Внутри локальной сети обмен данными между веб-сервером и 1С может происходить по обычному протоколу HTTP. Это безопасно, так как внешний мир видит только зашифрованное HTTPS-соединение до вашего прокси-сервера.

Таким образом, для Telegram ваш сервер будет выглядеть как надежный HTTPS-ресурс, а внутри компании вы избавитесь от необходимости «прикручивать» сложные сертификаты непосредственно к 1С.

Как реализовать проксирование на Nginx (пример конфигурации)

Приведем пример того, как логически должен выглядеть конфиг вашего прокси-сервера:


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.

Ключевые рекомендации

Применяя эти подходы, вы обеспечите надежное и безопасное взаимодействие между вашей учетной системой и Telegram, исключив ошибки проверки SSL-сертификатов.

← На главную