我在使用 Thin rack Ruby 服务器 ( https://github.com/macournoyer/thin ) 接收 HTTPS webhooks 时遇到了一些问题。
也许这不完全是与 Thin 相关的问题,而是与 SSL 证书配置相关的问题。
我想管理传入的 HTTPS 连接(webhooks:Telegram.org 服务器调用我的 Thin (sinatra/rack) 应用程序,通过 webhooks 发送消息更新)
第 1 步。我创建了一个 SSL KEY 和 PEM 文件自签名证书,如下所述:https://core.telegram.org/bots/self-signed
openssl req -newkey rsa:2048 -sha256 -nodes -keyout YOURPRIVATE.key -x509 -days 365 -out
YOURPUBLIC.pem -subj "/C=US/ST=New York/L=Brooklyn/O=Example Brooklyn Company/CN=YOURDOMAIN.EXAMPLE"
第 2 步。我调用 Telegram Server Bot API 以在指定的 HTTPS 主机/路径接收 webhook,如下所述:https://core.telegram.org/bots/api#setwebhook API端点返回成功。
第 3 步。我使用这些参数运行 Thin:
bundle exec thin start --ssl --ssl-key-file ~/.ssl/YOURPRIVATE.key --ssl-cert-file ~/.ssl/YOURPUBLIC.pem --rackup /myhome/handyBOTS/rackup/handler.ru --address xxx.xxx.xxx.xxx --port 8443 --environment production
Thin web server (v1.6.4 codename Gob Bluth)
...
...
...
我在运行时遇到了麻烦: 我看到 Telegram 远程服务器调用 Thin 服务器 webhook,但 Thin 提示简洁:
<SSL_incomp><SSL_incomp><SSL_incomp><SSL_incomp><SSL_incomp><SSL_incomp><SSL_incomp><SSL_incomp><SSL_incomp><SSL_incomp><SSL_incomp><SSL_incomp><SSL_incomp><SSL_incomp>
所以我确信瘦服务器会收到来自远程 Telegram 服务器的调用,但它不会处理请求。 我认为这是一些 SSL 配置不一致。
有什么想法吗?
我的具体问题是:
Thin 期望的 CRT 文件格式是什么?
使用此命令行参数 --ssl-cert-file ~/.ssl/YOURPUBLIC.pem
传递给 Thin PEM 文件是否正确?
更新: 该问题可能与 Thin 无关,但与某些证书链/捆绑配置有关,另请参阅: Telegram Bot API Webhooks Self-signed Certificate issue
谢谢
乔吉奥
最佳答案
[已解决]
建立证书是我的错。详情:
我不再测试瘦 SSL 配置(我必须测试),因为我决定最好将 SSL/防火墙/代理工作留给 NGINX,使用瘦实例作为工作人员:
https://github.com/solyaris/BOTServer/blob/master/wiki/nginx.md
关于使用 Thin rack ruby 服务器的 SSL 证书/HTTPS 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33856661/