Ssl 为电报Webhook创建和使用自签名证书的简单方法是什么?

Ssl 为电报Webhook创建和使用自签名证书的简单方法是什么?,ssl,webhooks,telegram,self-signed,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 我使用以下方法创建了一个自签名证书,用于电报Webhook,但最后电报将SSL错误返回给我,你知道更容易成功的方法吗? A)

系统信息:

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
我使用以下方法创建了一个自签名证书,用于电报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

D) 我还使用
SetWebhook
命令中的
MyDomain\u 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上,但也适用于其他操作系统)

  • 使用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_或_COMPANY_NAME/CN=SERVER_NAME_或_IP”

  • 接下来,使用以下简单方法设置电报上的webhook:

  • 您应该得到如下结果:

    {"ok":true,"result":true,"description":"Webhook was set"}
    
  • 检查电报上的webhook设置是否正确:
  • 
    {
    好的,没错,
    结果:{
    url:“[服务器名称或IP]:[端口]/[您的机器人令牌]”,
    拥有自定义证书:正确,
    挂起的\u更新\u计数:0,
    最大连接数:30
    }
    }
    

  • 您可以测试ssl设置并

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

  • 对于IIS


  • 谢谢你,我会测试它并尽快回复你。亲爱的@Charles,非常感谢,我用我的域和一个端口以及你的脚本来设置Webhook,最后它运行得很好:)。另外,我还有一个问题:您知道它是否可以与没有端口的子域(例如
    webhook.mydomain.com
    )而不是具有端口的域(例如
    mydomain.com:8443
    )一起工作吗?是的,这是可能的。由于它是https,默认情况下端口是443,因此在设置Webhook时,还可以指定端口443