Задать вопрос

Webhook на https, но без самого .pem файла сертификата?

Добрый день!

Пытаюсь настроить телеграм бота на работу через вебхук, но не получается. Пользуюсь pyTelegramBotAPI.
Через интерфейс своего хостера сделал SSL сертификаты на домен, рейтинг https://www.ssllabs.com/ssltest/ выдает А.

Не до конца понимаю, как именно мне надо зарегистрировать webhook через setwebhook в телеграме. Вроде все прошло нормально. Вот моя функция setwebhook:
WEBHOOK_URL_BASE = "https://%s:%s" % (WEBHOOK_HOST, WEBHOOK_PORT)
WEBHOOK_URL_PATH = "/%s/" % (API_TOKEN)

@app.route('/set_webhook', methods=['GET', 'POST']) 
def set_webhook(): 
    s = bot.set_webhook(url=WEBHOOK_URL_BASE+WEBHOOK_URL_PATH)
    if s:
        print(s)
        return "webhook setup ok" 
    else: 
        return "webhook setup failed"

Она возвращает webhook setup ok.

Это обработчик webhook запросов от телеграма:
# Process webhook calls
@app.route(WEBHOOK_URL_PATH, methods=['POST'])
def webhook():
    if flask.request.headers.get('content-type') == 'application/json':
        json_string = flask.request.get_data().decode('utf-8')
        update = telebot.types.Update.de_json(json_string)
        bot.process_new_updates([update])
        return ''
    else:
        flask.abort(403)


Мой хостер (beget.ru) не выдает зарегистрированные через их интерфейс SSL, а чтобы установить свои сертификаты, нужен выделенный IP-адрес за дополнительную плату. Телеграм говорит: "2. To use a self-signed certificate, you need to upload your public key certificate using certificate parameter." Мой сертификат вроде бы не является самоподписанным, т.к. сертификат регистрировал хостер (этот момент для меня не ясен до конца).
Поэтому хотел уточнить, если сайт уже на https, и у телеграма параметр certificate в методе setWebhook является не обязательным, то как правильно можно настроить webhook в моем случае?

Полный код моего файла __init__.py здесь: https://pastebin.com/0SUrTKN1

Ориентировался на этот пример библиотеки pyTelegramBotAPI.

Если вы съели собаку на телеграм ботах — подскажите, пожалуйста, как сделать webhook не имея самого .pem сертификата? Надо ли писать что-то BotFather, чтобы зарегистрировать webhook? Как можно проверить, что телеграм хотя бы пытается сделать POST запрос по указанному адресу? Как можно проверить промежуточные шаги настройки вебхука для бота?
  • Вопрос задан
  • 2020 просмотров
Подписаться 4 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 3
copist
@copist
Empower people to give
Ты веб-хук настраиваешь на HTTPS а SSL прицепить не можешь. Так работать не сможет.

1. Попробуй сделать так, чтобы твой бот работал через HTTP, если это разрешено
2. Меняй хостера, возьми VDS, устанавливай свой SSL (могу порекомендовать DigitalOcean или FirstVDS
Ответ написан
CityCat4
@CityCat4 Куратор тега Цифровые сертификаты
//COPY01 EXEC PGM=IEBGENER
сделал SSL сертификаты на домен

не выдает зарегистрированные через их интерфейс SSL

То есть хостер что-то там пошаманил и SSL есть, но сам сертификат не выдает? :) Без файла сертификата не получится нифига. Скорее всего хостера менять - нафиг такого хитро.опого.
Ответ написан
Комментировать
У вас демон слушает на 8443 порту.
WEBHOOK_PORT = 8443

А там сертификата-то нет. Там простой http. Генерируйте сертификат и добавляйте его в app.run и bot.set_webhook
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы