HTTPCLIENT SSL(https)通讯 遇到的问题

来源:互联网 发布:打印机wsd端口ip 区别 编辑:程序博客网 时间:2024/06/16 15:52

1、
https 客户端与服务端 交互设计到SSL通讯,服务端会校验对应hostname值是否正确。
可以通过,SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER 忽略域名验证。
可能的报错如下:
--------------------------------------------------------------------------------------------------------------------------------
Exception in thread "main" javax.net.ssl.SSLException: Certificate for <localhost> doesn't match common name of the certificate subject: NeXpose Security Console
at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:172)
--------------------------------------------------------------------------------------------------------------------------------

2、
jdk 1.8 和 1.6 对SSL 的API 解析是不一样的。
如果客户端和服务端的JDK 不一致会导致

可能的报错如下:
--------------------------------------------------------------------------------------------------------------------------------
Exception in thread "main" javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:882)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1188)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1215)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1199)
at org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:543)
at org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:409)
at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:177)
at org.apache.http.impl.conn.ManagedClientConnectionImpl.open(ManagedClientConnectionImpl.java:304)
at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:611)
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:446)
at org.apache.http.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.java:882)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:107)
at org.apache.http.examples.client.ClientCustomSSL.main(ClientCustomSSL.java:87)
Caused by: java.io.EOFException: SSL peer shut down incorrectly
at com.sun.net.ssl.internal.ssl.InputRecord.read(InputRecord.java:462)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:863)
... 13 more
--------------------------------------------------------------------------------------------------------------------------------

3、
基于证书的SSL 认证
是否可以实现绕过证书验证,这个还在测试。

0 0