gpt4 book ai didi

playframework - Play Framework WS 主机名验证证书问题

转载 作者:行者123 更新时间:2023-12-04 17:44:51 24 4
gpt4 key购买 nike

我正在使用 Play Framework 2.3.8,但在向某些主机发出 HTTPS 请求时遇到问题。在这种情况下,我似乎无法使用 WS client 连接到 Zendesk API 主机 (xxxxx.zendesk.com)。 .

我最初得到的错误是:

Cannot invoke the action, eventually got an error: java.net.ConnectException: HostnameVerifier exception.

这很奇怪,因为如果我在浏览器中或通过 ssl s_client 查看证书,它看起来是文件。 . CN 条目与域匹配。

如果我disable hostname verification ,我从 Cloudflare 收到一条错误消息,消息为“Forbidden”。它是 HTML,而不是 JSON,这不是我所期望的。

然后我尝试使用 Postman 发布相同的请求和 curl .请求成功,我得到了 JSON 格式的响应。

然后我使用了 Charles Web Debugging Proxy拦截来自 Play Framework 的 HTTPS 请求并将其与从 Postman 发送的请求进行比较。奇怪的是,如果 Charles 拦截请求,请求就会成功!查尔斯没有说明证书问题。

我看到其他人提示 Cloudflare 存在类似问题,在他们的案例中,结果证明他们的客户端不支持 TLS 1.2。我检查了一下,我正在运行 JVM 的 1.8 版,它默认支持 TLS 1.2,甚至尝试使用配置变量强制 TLS 1.2 以防万一,但这没有帮助。

我发现我使用的 Play Framework 版本中的 SSL 存在一些问题。

最佳答案

最后我试了Wireshark作为最后的手段,尝试确定从我的其他客户端(curl/Postman)和 Play Framework WS 客户端发送的请求之间的差异。

我注意到工作客户端在握手过程中发送了域名。然后点击它可能是 SNI 问题。

果然,Play Framework 2.3.x does not support SNI .

仅有的两个实际选项是使用单独的 HTTP 客户端,如 play-ws或者将我的 Play Framework 版本更新到 2.4.x。

我选择了后者,现在可以使用了。

主机名验证问题实际上是一个转移注意力的问题,与缺乏对 SNI 的支持有关。我能够毫无问题地重新启用它。

我希望这对遇到同样问题的人有所帮助!

关于playframework - Play Framework WS 主机名验证证书问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52584227/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com