Tag: sslsocketfactory

用Java SSLContextImpl $ TLS10Context随机“peer not authenticated”例外

使用SSL连接到HAProxy服务器时,出现随机出现的连接失败。 我已经确认这些故障发生在JDK版本1.7.0_21和1.7.0_25上,但是没有发生在1.7.0_04或1.6.0_38上。 例外是 Exception in thread "main" javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated at sun.security.ssl.SSLSessionImpl.getPeerCertificates(SSLSessionImpl.java:397) at SSLTest2.main(SSLTest2.java:52) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120) 这些失败仅在使用TLS SSL上下文时发生,而不是在默认上下文中发生。 以下代码在循环中运行了一千次,在循环完成之前发生了故障(大约2%的连接失败): SSLContext sslcontext = SSLContext.getInstance("TLS"); sslcontext.init(null, null, null); SSLSocketFactory factory = sslcontext.getSocketFactory(); SSLSocket socket = (SSLSocket)factory.createSocket("myserver", 443); //socket.startHandshake(); SSLSession session = socket.getSession(); session.getPeerCertificates(); socket.close(); 但是,如果我以这种方式创buildSSL上下文,则在我提到的任何Java版本上都没有连接失败: SSLSocketFactory factory […]