我需要在linux机器上安装一个Telegram bot,但我遇到了一个问题。据我所知,函数aiogram.utils.executor.start_webhook启动了一个服务器来捕获POST请求,并且这个服务器在幕后使用了aiohttp。我如何才能使它与自签名的SSL证书工作?当使用纯aiohttp它是可能的指定SSL上下文.这是可能的aiogram或使用像nginx的网络服务器是唯一的选择?
zqry0prt1#
在Aiogram文档中曾经有一个这样的例子,在开发文档中也有另一个例子。我不知道为什么当前的例子(v2.2.2)没有它(也许它仍然工作,但被埋葬在kwargs中)。old example显示了ssl导入,并根据Telegram bot rules设置了WEBHOOK_SSL_CERT和WEBHOOK_SSL_PRIV位置。开发分支(v3.0.0)具有function parameter形式的证书。看起来当前的进程是在initialisation of the BaseBot:
ssl
WEBHOOK_SSL_CERT
WEBHOOK_SSL_PRIV
# aiohttp main session ssl_context = ssl.create_default_context(cafile=certifi.where())
这表明当前证书必须在证书存储区中,否则您需要向bot提供一个新的ssl_context:self._connector_init = dict(limit=connections_limit, ssl=ssl_context)这应该会为您的具体情况指明正确的方向。
ssl_context
self._connector_init = dict(limit=connections_limit, ssl=ssl_context)
1条答案
按热度按时间zqry0prt1#
在Aiogram文档中曾经有一个这样的例子,在开发文档中也有另一个例子。我不知道为什么当前的例子(v2.2.2)没有它(也许它仍然工作,但被埋葬在kwargs中)。
old example显示了
ssl
导入,并根据Telegram bot rules设置了WEBHOOK_SSL_CERT
和WEBHOOK_SSL_PRIV
位置。开发分支(v3.0.0)具有function parameter形式的证书。
看起来当前的进程是在initialisation of the BaseBot:
这表明当前证书必须在证书存储区中,否则您需要向bot提供一个新的
ssl_context
:self._connector_init = dict(limit=connections_limit, ssl=ssl_context)
这应该会为您的具体情况指明正确的方向。