ssl - 为 Telegram Webhook 创建和使用自签名证书的简单方法是什么?

标签 ssl webhooks telegram self-signed

系统信息:

Server Win Server 2012
Web Server: IIS 8.5
Project platform: ASP.NET MVC
Webhook Path: https://webhook.MYDOMAIN.com/api/webhookaction

// I use my domain name instead of MYDOMAIN

我使用以下方式创建了一个自签名证书以用于Telegram Webhook,但最终telegram 向我返回了SSL 错误,你知道吗更简单的成功之道?


一) 我通过以下 OpenSSL 命令而不是通配符 SSL 创建了一个自签名证书

openssl req -newkey rsa:2048 -sha256 -nodes -keyout MyDomain_private_key.key -x509 -days 365 -out MyDomain_public.pem -subj "/C=US/ST=New York/L=MyDomain/O=MyDomain/CN=webhook.MyDomain.com"

B) 然后我通过以下命令从输出文件创建了一个 PFX:

openssl pkcs12 -export -out MyDomain.pfx -inkey MyDomain_private.key -in MyDomain_public.pem -certfile MyDomain_public.pem

C) 然后我在服务器上安装了 MyDomain.pfx 并将其绑定(bind)到 Https://webhook.mydomain.com

enter image description here

D) 此外,我在 SetWebhook 命令中使用了 MyDomain_public.pem 文件作为认证文件(同时使用第三个库和 Curl 命令)。

Curl 命令:

curl -F "url=https://webhook.MyDomain.com/api/Webhookaction/" -F "certificate=C:\path\mydomain_public.pem" https://api.telegram.org/bot[TOKEN]/setWebhook

但是当我调用GetWebhookInfo API 命令时,它返回这个错误:

{  
   "ok":true,
   "result":{  
      "url":"https://api.telegram.org/bot[token]/setWebhook?url=https://webhook.mydomain.com/api/webhookaction/",
      "has_custom_certificate":true,
      "pending_update_count":1,
      "last_error_date":1489126755,
      "last_error_message":"SSL error {336134278, error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed}",
      "max_connections":40
   }
}

最佳答案

我使用这种快速简便的方法为 Telegram 设置自签名 webhook(在 Windows 上,但它也应该适用于其他操作系统)

  1. 使用 openSSL 创建您的证书

    openssl req -newkey rsa:2048 -sha256 -nodes -keyout PRIVATE.key -x509 -days 365 -out PUBLIC.pem -subj "/C=NG/ST=Lagos/L=Lagos/O=YOUR_NAME_OR_COMPANY_NAME/CN =SERVER_NAME_OR_IP"

  2. 接下来使用这个简单的方法在 Telegram 上设置 webhook:

How to set Telegram bot webhook?你应该得到这样的结果:

{"ok":true,"result":true,"description":"Webhook was set"}
  1. 检查网络钩子(Hook)是否在 Telegram 上正确设置: https://api.telegram.org/bot[token]/getWebhookinfo

{ 好的:是的, 结果: { 网址:“[SERVER_NAME_OR_IP]:[PORT]/[YOUR_BOT_TOKEN]”, has_custom_certificate:真, pending_update_count: 0, 最大连接数:30 } }

  1. 您可以测试您的 ssl 设置 herehere

  2. 我个人不为我的机器人使用 IIS。我使用一个非常轻量级的网络服务器 (elli) 作为我在 Elixir 中构建的 bot 服务器的一部分,该服务器的证书设置就像在配置文件中指向公钥和私钥的路径一样简单。

  3. 对于 IIS this will direct you

关于ssl - 为 Telegram Webhook 创建和使用自签名证书的简单方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42713926/

相关文章:

macos - 不小心从 mac 中删除了 Digicert 证书

python - 错误处理 Telegram bot

mongodb - shopify mongodb连接

c# - 我如何知道 telegram 用户是否加入了我的 channel ?

python - 在回复键盘内制作内联键盘

wordpress - 混合内容警告,但源代码中没有内容

node.js - 开类 Node .js : do I need to load ssl certificates in the web console or in the application?

wordpress - HTTPS 不安全

json - 自定义 JSON 格式 webhook WooCommerce Wordpress

json - GitLab 5.2 后接收 WebHook