Пытаюсь подключить сертификат к телеграм.
Создал сертификат командой:
openssl req -newkey rsa:2048 -sha256 -nodes -keyout ИМЯ.key
-x509 -days 365 -out ИМЯ.pem -subj
"/C=RU/ST=КРАЙ/L=ГОРОД/0=ПОДРАЗДЕЛЕНИЕ/CN=МОЙСАЙТ"
Ключ создался. На выходе получил:
ИМЯ.key
ИМЯ.pem
Далее - в настройках сайта (использую ISPmanager) добавил свой сертификат. Привязал его к сайту, который указывал при создании сертификата. Всё прошло успешно.
Далее. Воспользовался командой:
curl -F "url=https://МОЙСАЙТ/bot.php"
-F "certificate=ИМЯ.pem"
"https://api.telegram.org/botТОКЕНМОЕГОБОТА/setwebhook"
В ответ пришло сообщение:
{"ok":true,"result":true,"description":"Webhook was set"}
Вроде как ключ установился (если я правильно понял). Вписываю в браузере строку:
https://api.telegram.org/botТОКЕНМОЕГОБОТА/getWebhookInfo
Возвращает такой результат:
{"ok":true,"result":{"url":"https://МОЙСАЙТ/bot.php","has_custom_certificate":false,"pending_update_count":7,"max_connections":40}}
Меня напрягает это:
"has_custom_certificate":false
Мой сертификат получается не самоподписной? (Или что???)
Ну собственно, мой скрипт обработки bot.php:
<?php
$updates = file_get_contents("php://input");
$updates = json_decode($updates, true);
$chatID = $updates["message"]["chat"]["id"];
$text = $updates["message"]["text"];
sendMessage($chatID, $text);
function sendMessage($chatID, $message)
{
$url = $GLOBALS[website]."/sendMessage?chat_id=".$chatID."&text=".urldecode($message);
file_get_contents($url);
}
Пишу своему боту - в ответ тишина. Получается, вебхук не срабатывает. Что не так сделано?
Чтобы Telegram мог отсылать данные по ссылкам, где установлен самоподписанный сертификат, нужно методом setWebhook передавать вместе со ссылкой сам сертификат (параметр certificate, формат inputFile). Почитать про сертификаты можно здесь: self-signed cert guide: https://core.telegram.org/bots/self-signed
Продвижение своими сайтами как стратегия роста и независимости