gpt4 book ai didi

Android 可信凭据和 OkHttp

转载 作者:太空宇宙 更新时间:2023-11-03 14:55:20 25 4
gpt4 key购买 nike

我对如何使用 OkHttp 的系统信任凭证有点困惑。我正在使用以下代码:

            SSLContext sslContext = SSLContext.getInstance("TLS");
KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());
String algo = TrustManagerFactory.getDefaultAlgorithm();
TrustManagerFactory tmf =TrustManagerFactory.getInstance(algo);
tmf.init(ks);
TrustManager managers[]= tmf.getTrustManagers();
X509TrustManager defaultTrustMgr = null;

for (int i = 0; i < managers.length; i++) {
if (managers[i] instanceof X509TrustManager) {
defaultTrustMgr = (X509TrustManager) managers[i];
}
}
X509Certificate[] x509Certificates = defaultTrustMgr.getAcceptedIssuers();
sslContext.init(null, managers, null);

然而,当我使用 charles 时,我仍然能够嗅探流量,从而允许中间人攻击。如何配置 OkHttp 以使用 Android 自带的默认证书?

谢谢,格雷姆

最佳答案

您需要显式配置 OkHttp 的套接字工厂:

okHttpClient.setSslSocketFactory(sslContext.getSocketFactory());

以前 OkHttp 使用系统默认的套接字工厂,但这是有问题的。特别是,配置该套接字工厂以支持 SPDY 和 HTTP/2 的 NPN 和 ALPN 会导致共享该套接字工厂的其他代码崩溃。

关于Android 可信凭据和 OkHttp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29955777/

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