SNI:SSLHandshakeException unrecognized_name
Posted
技术标签:
【中文标题】SNI:SSLHandshakeException unrecognized_name【英文标题】:SNI : SSLHandshakeException unrecognized_name 【发布时间】:2021-11-06 10:38:50 【问题描述】:尝试联系某个网站时出现以下错误:
10:29:32.228 [ForkJoinPool-1-worker-1] ERROR com.intuit.karate - javax.net.ssl.SSLHandshakeException: Received fatal alert: unrecognized_name, http call failed after 35 milliseconds for URL: https://redacted
10:29:32.229 [ForkJoinPool-1-worker-1] ERROR com.intuit.karate - http request failed: javax.net.ssl.SSLHandshakeException: Received fatal alert: unrecognized_name
我找到了以下答案:https://***.com/a/14884941/10791639
我编辑了karate-apache/src/main/java/com/intuit/karate/http/apache/ApacheHttpClient.java
L125,删除了这一行的评论:
System.setProperty("jsse.enableSNIExtension", "false");
但我仍然遇到和以前一样的问题。我还没有找到需要严格的服务器名称指示才能重现我的问题的公共网站。
【问题讨论】:
你可以尝试切换到karate-jersey
而不是apache。据我所知,NoopHostnameVerifier
应该这样做 - 但仅适用于 SSL:github.com/intuit/karate/blob/master/karate-apache/src/main/…
我没能让空手道运动衫发挥作用。我们找到了一个不同的解决方案,我在下面的答案中详细说明了,你能看看吗?谢谢。
【参考方案1】:
我们通过更改 karate-apache/src/main/java/com/intuit/karate/http/apache/ApacheHttpClient.java
中的内容找到了解决方案:
SSLConnectionSocketFactory socketFactory = new LenientSslConnectionSocketFactory(sslContext, new NoopHostnameVerifier());
变成
SSLConnectionSocketFactory socketFactory = new SslConnectionSocketFactory(sslContext, new NoopHostnameVerifier());
@Peter,您认为使用严格或宽松 SSL 连接的参数是否可行?
【讨论】:
LenientSslConnectionSocketFactory
是空手道中的代码-理想情况下,应该修复它以使您的场景正常工作-您认为您可以调试它并计算吗?参考github.com/intuit/karate/issues/385
我在发布此解决方案后发现了此问题,因为我试图找出解决此问题的最佳方法。你可以重新打开它并分配给我。
Adrien - 你能评论一下那张票吗,否则我不能分配它(一些 GitHub 权限的事情)
有人报告说-Djsse.enableSNIExtension=false
在此发表评论:***.com/q/69123671/143475以上是关于SNI:SSLHandshakeException unrecognized_name的主要内容,如果未能解决你的问题,请参考以下文章