ssl - Telegram Bot API Webhooks 自签名证书问题

标签 ssl nginx https ssl-certificate telegram-bot

我正在使用 Ruby 语言服务器通过 setwebhooks 管理多个 Telegram 机器人

顺便说一句,我将在 BOTServer 以开源方式交付服务器

问题

我无法从 Telegram Bot API 服务器接收 webhook 更新。我已经设置了一个 webhook token (Telegram 回复“成功”),但我没有收到关于成功配置的 webhook 的任何更新。

我认为问题可能在 self-signed Certificate 附近谜团。见老reddit question和答案。

我有类似的问题,我认为发送 HTTPs webhooks 更新的 Telegram Bot API 服务器和接收 webhooks 的机器人服务器(我使用 nginx 作为代理/https SSL 证书处理程序)之间存在一些“误解”。

似乎有人解决了使用证书“链”配置 nginx 的问题;我对证书技巧一无所知,所以我问:

问题

可能有人可以发布信息,配置 nginx(任何 ssl 网络服务器!),并为傻瓜提供详细设置/分步说明,展示如何从此处描述的 .key 和 .pem 文件传递​​:https://core.telegram.org/bots/self-signed 设置证书“链”以在 nginx 配置中配置,以被 Telegram Bot API 服务器“接受”?

顺便说一句,我现在的 nginx 配置:

upstream backend {
  server 127.0.0.1:3000;
}

#
# HTTPS server
#
server {
  listen 8443 ssl;
  server_name myhost.com;

  ssl on;
  ssl_certificate /mypath/ssl/PUBLIC.pem;
  ssl_certificate_key /mypath/ssl/PRIVATE.key;

  ssl_session_timeout 5m;

  ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
  ssl_ciphers "HIGH:!aNULL:!MD5 or HIGH:!aNULL:!MD5:!3DES";
  ssl_prefer_server_ciphers on;

  location @backend {
    proxy_pass http://backend;
  }

  location / {
    try_files $uri @backend;
  }
}

其中 PRIVATE.key + PUBLIC.pem 文件是根据以下指南生成的:Using self-signed certificates :

openssl req -newkey rsa:2048 -sha256 -nodes -keyout PRIVATE.key -x509 -days 365 -out PUBLIC.pem -subj "/C=US/ST=New York/L=Brooklyn/O=Example Brooklyn Company/CN=YOURDOMAIN.EXAMPLE"

谢谢

乔治

最佳答案

我自己回答,分享在这里找到的解决方案: https://stackoverflow.com/a/33260827/1786393

重点不是提到的nginx配置,而是PEM文件:

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"
openssl 的 subj strig 中的

YOURDOMAIN.EXAMPLE 必须是接收 webhook 的服务器的真实主机名

关于ssl - Telegram Bot API Webhooks 自签名证书问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33932007/

相关文章:

ssl - TLS 协议(protocol)定义的致命警报代码是 70

java - 使用 HttpClient 4 通过 WiFi 进行 HTTPS 身份验证

django - Docker中的Django微服务

php - 如果客户端断开连接,则停止执行 PHP 脚本

c# - 通过 http 下载文件不起作用但通过 https 工作正常

ruby-on-rails - AWS S3 禁用 SSLv3 支持

ssl - MAMP Pro,403 禁止,除非输入 https ://

Tomcat 7 重定向到 https 与 web.xml

nginx - 使用 nginx 提供给定目录的子目录中的静态文件

linux - Nginx 访问服务器上的文件时返回 404 not found