gpt4 book ai didi

android - 现在 SSLSocketFactory 在 Android 上已被弃用,处理客户端证书身份验证的最佳方法是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:13:59 25 4
gpt4 key购买 nike

我正在开发一个需要客户端证书身份验证(使用 PKCS 12 文件)的 Android 应用程序。在弃用所有 apache.http.* 之后,我们开始了一项相当大的网络层重构工作,我们决定使用 OkHttp 作为替代品,到目前为止我喜欢非常喜欢。

但是,我还没有找到任何其他方法来处理客户端证书身份验证而不使用 SSLSocketFactory、OkHttp 或其他任何与此相关的方法。那么在这种特殊情况下最好的行动方案是什么?OkHttp 是否有另一种方法来处理这种身份验证?

最佳答案

如果您使用 https,则必须使用有效的证书。在您的开发阶段,您必须信任证书,如何?sslSocketFactory(SSLSocketFactory sslSocketFactory) 已弃用,取而代之的是 sslSocketFactory(SSLSocketFactory sslSocketFactory, X509TrustManager trustManager),您必须更新您的 gradle 文件下面的代码 fragment 将帮助您获得信任任何 ssl 证书的可信 OkHttpClient。

TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
trustManagerFactory.init((KeyStore) null);
TrustManager[] trustManagers = trustManagerFactory.getTrustManagers();
if (trustManagers.length != 1 || !(trustManagers[0] instanceof X509TrustManager)) {
throw new IllegalStateException("Unexpected default trust managers:" + Arrays.toString(trustManagers));
}
X509TrustManager trustManager = (X509TrustManager) trustManagers[0];
SSLContext sslContext = SSLContext.getInstance("SSL");
sslContext.init(null, new TrustManager[] { trustManager }, null);
SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory();
OkHttpClient client = new OkHttpClient.Builder().sslSocketFactory(sslSocketFactory, trustManager);

关于android - 现在 SSLSocketFactory 在 Android 上已被弃用,处理客户端证书身份验证的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40500629/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com