为Telegram Webhook创建和使用自签名认证的简便方法是什么?

时间:2017-03-10 08:44:44

标签: 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 ,但最后电报向我发回SSL错误,您知道吗?一种更容易的成功方式?

A) 我通过以下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并将其绑定到Https://webhook.mydomain.com

enter image description here

d) 我还使用MyDomain_public.pem命令中的SetWebhook文件作为认证文件(同时包含第三个库和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
   }
}

1 个答案:

答案 0 :(得分:3)

我使用这种快速简单的方法为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. 接下来使用这种简单的方法设置电报上的webhook:

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

    {"ok":true,"result":true,"description":"Webhook was set"}
    
    1. 检查是否在Telegram上正确设置了webhook: https://api.telegram.org/bot[token]/getWebhookinfo
    2. { ok: true, result: { url: "[SERVER_NAME_OR_IP]:[PORT]/[YOUR_BOT_TOKEN]", has_custom_certificate: true, pending_update_count: 0, max_connections: 30 } }

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

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

      3. 对于IIS this will direct you