4

我目前有一个应用程序可以向很多 URL 发出 HTTP 发布请求。某些连接失败,但出现以下异常。

线程“主”javax.net.ssl.SSLProtocolException 中的异常:握手警报:unrecognized_name at sun.security.ssl.ClientHandshaker.handshakeAlert(ClientHandshaker.java:1410) at sun.security.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.java: 2004) 在 sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1113) 在 sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1363) 在 sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java :1391) 在 sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1375) 在 sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:563) 在 sun.net.www.protocol。 https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185) 在 sun.net.www.protocol.https.HttpsURLConnectionImpl。在 com.amazon.cba.iopn.test.MainTest.connectWithFallbackIfRequired(MainTest.java:246) 在 com.amazon.cba.iopn.test.MainTest.createHttpConnection(MainTest.java:201) 连接(HttpsURLConnectionImpl.java:153)在 com.amazon.cba.iopn.test.MainTest.processLine(MainTest.java:105) 在 com.amazon.cba.iopn.test.MainTest.main(MainTest.java:99)

我从网上阅读了其他文章后发现这是服务器配置的问题。作为回复的服务器会抛出一个警告,Java 将其视为异常。解决方法是将jsse.enableSNIExtension设置为“ false ”。

  • 如果将jsse.enableSNIExtension系统属性设置为false ,客户端会暴露哪些安全风险?

PS:我们尝试通过 HTTPS 连接的所有 URL。所以,会有证书验证。

4

1 回答 1

6

来自甲骨文(http://docs.oracle.com/javase/7/docs/technotes/guides/security/jsse/JSSERefGuide.html):

它支持与虚拟服务器的 TLS 连接,其中不同网络名称的多个服务器托管在单个底层网络地址

如果您禁用 jsse.enableSNIExtension 您将无法连接到虚拟服务器下的页面

于 2016-03-31T09:11:01.560 回答