如何在新的Apache Http Client 4.3中创建SSL套接字工厂?
以下是我在4.3之前创建它的方法
val ts = new TrustStrategy() {
def isTrusted(chain: Array[X509Certificate], authType: String): Boolean = true
}
new SSLSocketFactory(ts, SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER)
现在SSLSocketFactory
被标记为已弃用。定义自定义TrustStrategy
的新方法是什么?我无法理解。
答案 0 :(得分:5)
好吧,我明白了。
像这样初始化您的ConnectionSocketFactory
val sslContext = SSLContexts.custom().loadTrustMaterial(null, new TrustSelfSignedStrategy).useTLS().build()
new SSLConnectionSocketFactory(sslContext, new AllowAllHostnameVerifier())
如果您看一下TrustSelfSignedStrategy
的来源,他们将自签名证书与真实证书区分开的方式是检查链的长度。
public boolean isTrusted(
final X509Certificate[] chain, final String authType) throws CertificateException {
return chain.length == 1;
}
我不确定这是非常可靠的方式,但请记住。也许值得在X509Certificate
中isTrusted
进行检查。