我正在使用 HttpClient 4 来获取 https URL。服务器具有有效的证书,实际上从 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 的支持。
但仍然没有运气。