【发布时间】:2018-03-05 08:50:23
【问题描述】:
所以我在我的网站上为我的电报机器人制作了一个小脚本。唯一的问题是,如果我将我的 URL 设置为机器人的 webhook,则会出现 SSL 错误。
也尝试添加自签名证书,所以has_custom_certificate变为true,但出现了同样的错误。
我做错了什么?
【问题讨论】:
所以我在我的网站上为我的电报机器人制作了一个小脚本。唯一的问题是,如果我将我的 URL 设置为机器人的 webhook,则会出现 SSL 错误。
也尝试添加自签名证书,所以has_custom_certificate变为true,但出现了同样的错误。
我做错了什么?
【问题讨论】:
问题出在你的证书上。
您的 getWebHookInfo 中的错误:
"last_error_message":"SSL error {337047686, error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed}"
Telegram 是否说它需要整个证书链(也称为 CA Bundle 或全链证书)。
您可以使用 SSL Labs SSL Server Test 服务来检查您的证书:
只需像以下示例一样传递您的 URL,将 coderade.github.io 替换为您的主机:
https://www.ssllabs.com/ssltest/analyze.html?d=coderade.github.io&hideResults=on&latest
如果您看到“链问题:不完整”,则表示您没有提供完整的链式证书。
您需要添加所有三个所需的文件(.key、.crt 和 .ca-bundle)。 Namecheap 有很好的文档说明如何以多种不同方式在您的站点中安装 SSL 证书,例如 Apache、Node.js、Nginx 等。请检查您是否可以遵循其中一种可用方式:Namecheap - How to Install SSL certificates
无论如何,您需要为您的 SSL 证书提供商下载完整的链式证书并将其安装在您的网络服务器上。
我不知道您使用的是哪种服务,但对于我的示例,使用gunicorn 我解决了添加ca-certs 和我的SSL 证书提供程序(在我的情况下为Namecheap Comodo)发送的ca-bundle 文件我的 SSL 配置,如下例:
ca_certs = "cert/my-service.ca-bundle"
如需更多信息:@martini 回复此thread 和FIX: Telegram Webhooks Not Working 帖子。
【讨论】:
您必须创建一个自签名证书才能通过 https 部署您的服务器。如果你正在使用烧瓶,你可以按照这个很好的教程 - https://blog.miguelgrinberg.com/post/running-your-flask-application-over-https
【讨论】: