如何在新的Apache Http Client 4.3中创建SSL套接字工厂?

时间:2013-09-28 00:20:42

标签: ssl apache-commons-httpclient

如何在新的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的新方法是什么?我无法理解。

1 个答案:

答案 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;
}

我不确定这是非常可靠的方式,但请记住。也许值得在X509CertificateisTrusted进行检查。