【发布时间】:2019-01-05 09:03:06
【问题描述】:
我已经使用rubenlagus api 在 Java 上创建了电报机器人。现在我无法设置 webhook。我知道 webhook 的这些规则:
*支持 IPv4,Webhooks 目前不支持 IPv6。
*在端口 443、80、88 或 8443 上接受来自 149.154.167.197-233 的传入 POST。
*能够处理 TLS1.0+ HTTPS 流量。
*提供受支持的非通配符、已验证或自签名证书。
*使用与您在设置时提供的域匹配的 CN 或 SAN。
*提供所有中间证书以完成验证链。
我有一个带有经过验证的 ssl 证书的域名。Qualys test 显示 A+ 等级。服务器支持 IPv4。 443 端口正在监听。并且服务器在端口 443 上接受来自 149.154.167.197-233 的传入 POST。我使用这个 rubenlagus api 方法来创建 TelegramApi
private static TelegramBotsApi createNoSelfSignedTelegramBotsApi() throws TelegramApiException {
return new TelegramBotsApi(
"src/main/resources/server.jks",//path to KeyStore for the server
"myPassword", //Key store password for the serve
"https://example.com:443", //External url
"https://localhost:443"); //Internal url
}
我已经通过这些命令获得了 server.jks
- openssl pkcs12 -export -in mydomain.net.crt -inkey mydomain.key > keypair.p12
- keytool -importkeystore -srckeystore keypair.p12 -destkeystore server.jks -srcstoretype pkcs12
这是我的代码:
ApiContextInitializer.init();
TelegramBotsApi botsApi = new TelegramBotsApi(
"src/main/resources/server.jks",
"mypassword",
"https://example.com:443",
"https://localhost:443");
BotHook webhookBot = new BotHook(options);
botsApi.registerBot(webhookBot);
当我启动程序时,我会收到这个
2018 年 7 月 28 日下午 3:27:59 org.glassfish.grizzly.http.server.NetworkListener 启动
INFO: 绑定到 [localhost:443] 的已启动监听器
2018 年 7 月 28 日下午 3:27:59 org.glassfish.grizzly.http.server.HttpServer 开始
信息:[HttpServer] 已启动。
但机器人不起作用。我在服务器的日志中看到了这一点:
2018/07/29 15:08:43 [错误] 1166#1166: *453 openat() "/var/www/www->root/data/www/example.net/callback/WebhookClass 失败 (2 :没有这样的文件或>目录), 客户端:149.154.167.227,服务器:example.net 请求:“POST >/callback/WebhookClass HTTP/1.1”,主机:“example.net”
Grizzly 似乎无法处理 http 请求。当我试图通过这个 curl 命令检查它时
curl -X POST -i http://217.0.0.1:443/callback
我收到了
curl: (7) 连接217.0.0.1 443端口失败:连接超时
我多次检查了 TelegramBotsApi 构造函数中传递的所有参数。
【问题讨论】:
-
您的问题不清楚,从您显示的内容来看,您已成功在计算机上启动服务器。出了什么问题?错误是什么?
-
我无法回答问题。但是 curl 命令中的 IP 和协议似乎是错误的。应该是:
curl -X POST -i -k https://127.0.0.1:443/callback -
很难判断哪里出了问题,您应该提供有关您的环境的更多详细信息。最佳选择 - 提供重现您的问题的最小可行示例。
标签: java ssl telegram-bot telegram-webhook