Каталог решений - Телеграм, 1С http-сервис, webhook по SSL

Телеграм, 1С http-сервис, webhook по SSL

Телеграм, 1С http-сервис, webhook по SSL

В наличии

Как установить Телеграм webhook по HTTPS на 1С http-сервис используя самоподписанный (self signed) сертификат на IP адрес. Личный опыт.

Категория:

Описание

Пару дней не мог установить webhook телеграм бота на HTTP-сервис 1С по протоколу HTТPS. Все что-то мешало… То телеграм не хотел сертификат принимать, то в IIS не получалось загрузить свой сертификат. По этому опубликую личный опыт как все таки у меня это получилось…

 

1. Качаем и устанавливаем OpenSSL. Генерируем сертификат. CN это внешний адрес вашего сервера на котором виден HTTP-сервис. "-days 9999" — 28 лет, что бы два раза не бегать )))

openssl req -newkey rsa:2048 -sha256 -nodes -keyout webhook.key -x509 -days 9999 -out webhook.cer -subj "/C=US/ST=State/L=Cyti/O=You Company/CN=IP_Адрес_сервера"

В итоге получим два файла webhook.key (приватный ключ) и webhook.cer (собственно сертификат).

2. Ищем в интернете утилиту pvk.exe авторства Dr Stephen N Henson. Конвертируем приватный ключ в формат PVK и устанавливаем пароль на ключ. Например 12345678

pvk -in webhook.key -out webhook.pvk –topvk

3. Создаем из файла сертификата и файла PVK сертификат PFX. 

pvk2pfx.exe -pvk webhook.pvk -spc webhook.cer -pfx webhook.pfx -pi 12345678 -po 12345678

4. Этот сертификат можно спокойно установить в IIS и забиндить SSL порт с этим сертификатом на порт 443.

5. Вешаем веб-хук телеграм бота на наш HTTP-сервис 1С. "Шаблон" и "Имя_bot" — это на случай если наш HTTP-сервис будет обслуживать несколько ботов.

curl -F "url=https://адрес_сервера:443/telegram_hs/hs/webhook/шаблон/имя_bot" -F "certificate=@webhook.cer" https://api.telegram.org/botТокенБота/setWebhook -k

6. Проверяем веб-хук.

https://api.telegram.org/botТокенБот/getWebhookInfo

 

 

has_custom_certificate = true — значит сертификат установлен.

7. Теперь нужно сделать так, чтобы телеграм мог достучаться до HTTP-сервиса без авторизации. Для этого заводим в 1С пользователя (например hs) с паролем (пусть 12345678). На сервере IIS где опубликованы веб-сервисы и HTTP-сервисы копируем публикацию C:\inetpub\wwwroot\myTest -> C:\inetpub\wwwroot\myTest_noauth. В диспетчере служб IIS преобразовываем новый каталог в приложение. Редактируем файл default.vrd примерно так:

 

 

т.е. выключаем все, кроме HTTP-сервиса "WebHook". У меня не опубликованы веб-сервисы, по этому их нет в файле. У вас могут быть, значит их тоже надо отключить. Как то так:

 

 

Ну вот и все вроде бы. Сообщения пользователей из бота прилетают в 1С. Вот эхо-бот на 1С отвечает пользователю.

 

P.S. Пункт 7 можно не делать, если веб-хук повесить сразу с указанием имени и пароля пользователя!

curl -F "url=https://hs:12345678@адрес_сервера:443/telegram_hs/hs/webhook/шаблон/имя_bot" -F "certificate=@webhook.cer" https://api.telegram.org/botТокенБота/setWebhook -k

Спасибо uno-c за подсказку!

has been added to your cart:
Оформление заказа