【问题标题】:SNI : SSLHandshakeException unrecognized_nameSNI:SSLHandshakeException unrecognized_name
【发布时间】:2019-08-16 15:43:41
【问题描述】:

尝试联系某个网站时出现以下错误:

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://stackoverflow.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/…
  • 我没能让空手道运动衫发挥作用。我们找到了一个不同的解决方案,我在下面的答案中详细说明了,你能看看吗?谢谢。

标签: karate sslhandshakeexception sni


【解决方案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 在此发表评论:stackoverflow.com/q/69123671/143475
猜你喜欢
  • 2013-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多