为了账号安全,请及时绑定邮箱和手机立即绑定

SSL握手警报:自升级到Java1.7.0以来未识别的_name错误

SSL握手警报:自升级到Java1.7.0以来未识别的_name错误

阿波罗的战车 2019-06-28 16:39:33
SSL握手警报:自升级到Java1.7.0以来未识别的_name错误我今天从Java1.6升级到Java1.7。从那时起,当我试图通过SSL建立到我的Web服务器的连接时会发生错误:javax.net.ssl.SSLProtocolException: handshake alert:  unrecognized_name     at sun.security.ssl.ClientHandshaker.handshakeAlert(ClientHandshaker.java:1288)     at sun.security.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.java:1904)     at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1027)     at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1262)     at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1289)     at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1273)     at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:523)     at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)     at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1296)     at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)     at java.net.URL.openStream(URL.java:1035)以下是代码:SAXBuilder builder = new SAXBuilder();Document document = null;try {     url = new URL(https://some url);     document = (Document) builder.build(url.openStream());} catch (NoSuchAlgorithmException ex) {     Logger.getLogger(DownloadLoadiciousComputer.class.getName()).log(Level.SEVERE, null, ex);  }这只是一个测试项目,这就是为什么我允许和使用不受信任的证书与代码一起使用的原因:TrustManager[] trustAllCerts = new TrustManager[]{     new X509TrustManager() {         public java.security.cert.X509Certificate[] getAcceptedIssuers() {             return null;         }         public void checkClientTrusted(                 java.security.cert.X509Certificate[] certs, String authType) {         }         public void checkServerTrusted(                 java.security.cert.X509Certificate[] certs, String authType) {         }     }};try {我成功地试图连接到https://google.com..我的错在哪里?谢谢。
查看完整描述

3 回答

?
胡说叔叔

TA贡献1804条经验 获得超8个赞

可以禁用具有系统属性jsse.enableSNIExtenence=false的发送SNI记录。

如果您可以更改代码,它将有助于使用。SSLCocketFactory#createSocket()(没有主机参数或连接的套接字)。在这种情况下,它不会发送server_name指示。


查看完整回答
反对 回复 2019-06-28
  • 3 回答
  • 0 关注
  • 1068 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信