我正在使用HttpClient 4来获取https网址。服务器具有有效的证书,实际上从chrome访问相同的https url工作正常,没有任何警告。
但是从java代码开始,执行时,我得到:
javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated
at com.sun.net.ssl.internal.ssl.SSLSessionImpl.getPeerCertificates(SSLSessionImpl.java:352)
相同的代码适用于一个https链接,而不适用于另一个。工作证书和非工作证书之间的主要区别如下:
工作的人使用RC4_128
抛出异常的那个使用CAMELLIA 256 CBC
然后我发现Java不支持Camellia。请参阅http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6537034和http://en.wikipedia.org/wiki/Comparison_of_TLS_Implementations#Encryption_Algorithms如何将此支持添加到我的HttpClient代码中?
我添加了BouncyCastle库和安全提供程序
static {
Security.addProvider(new BouncyCastleProvider());
}
据说这增加了对Camellia的支持。
但仍然没有运气。