Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Playframework 播放框架WS-Hostname验证证书问题_Playframework_Playframework 2.3_Zendesk Api - Fatal编程技术网

Playframework 播放框架WS-Hostname验证证书问题

Playframework 播放框架WS-Hostname验证证书问题,playframework,playframework-2.3,zendesk-api,Playframework,Playframework 2.3,Zendesk Api,我正在使用Play Framework 2.3.8,在向某些主机发出HTTPS请求时遇到问题。在本例中,我似乎无法使用连接到Zendesk API主机(xxxxx.Zendesk.com) 我最初得到的错误是: 无法调用该操作,最终出现错误:java.net.ConnectException:HostnameVerifier异常 这很奇怪,因为如果我在浏览器中或通过查看,证书看起来像文件。CN条目与域匹配 如果是,我将从Cloudflare收到一条错误消息,消息为“禁止”。它是HTML格式的,而

我正在使用Play Framework 2.3.8,在向某些主机发出HTTPS请求时遇到问题。在本例中,我似乎无法使用连接到Zendesk API主机(xxxxx.Zendesk.com)

我最初得到的错误是:

无法调用该操作,最终出现错误:java.net.ConnectException:HostnameVerifier异常

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

如果是,我将从Cloudflare收到一条错误消息,消息为“禁止”。它是HTML格式的,而不是JSON格式的,这不是我所期望的

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

然后我用它截获来自Play框架的HTTPS请求,并将其与Postman发送的请求进行比较。奇怪的是,如果Charles拦截请求,请求成功了!查尔斯没有透露有关证书问题的任何消息

我曾看到其他人抱怨Cloudflare存在类似问题,在他们的案例中,他们的客户机不支持TLS 1.2。我检查并运行了JVM的1.8版本,该版本支持TLS1.2默认值,甚至尝试使用配置变量强制TLS1.2,以防万一,但没有帮助

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

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

我注意到,作为握手的一部分,工作客户发送了域名。然后点击,这可能是SNI的问题

果然

唯一的两个真正的选择是使用一个单独的HTTP客户端,比如将我的Play Framework版本更新为2.4.x

我选择了后者,现在它正在工作

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

我希望这能帮助有同样问题的人