4

如何在新的 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什么?我想不通。

4

1 回答 1

6

嗯,我想通了。

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

于 2013-09-30T03:10:30.930 回答