gpt4 book ai didi

android - Android中的OkHttp Mutual SSL

转载 作者:行者123 更新时间:2023-12-04 22:39:11 24 4
gpt4 key购买 nike

我正在尝试使用 okhttp 在我的 android 应用程序上实现双向 ssl。目前,我已经通过输入流从原始文件夹中读取服务器证书并将其添加到 keystore ,将服务器证书添加到信任库,从而实现了证书固定。我不清楚的是如何添加客户端 key 对以使用相互 ssl 初始化 okhttp 客户端。我当前的代码是;

        try {

KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
keyStore.load(null, null);
InputStream certInputStream = context.getResources().openRawResource(
context.getResources().getIdentifier("server",
"raw", context.getPackageName()));

BufferedInputStream bis = new BufferedInputStream(certInputStream);
CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509");
while (bis.available() > 0) {
Certificate cert = certificateFactory.generateCertificate(bis);
keyStore.setCertificateEntry("s1ha", cert);
}
TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
trustManagerFactory.init(keyStore);
trustManagers = trustManagerFactory.getTrustManagers();
sslContext = SSLContext.getInstance("TLS");
sslContext.init(null, trustManagers, new SecureRandom());
} catch (Exception e) {
e.printStackTrace();
}
我可以将带有客户端 key 对的 keystore 复制到原始文件夹并打开该 keystore 而不是默认类型并将其传递给信任管理器并构建 okhttp 客户端吗?
我是新手,对此我有点困惑。数周以来一直在寻找指南,但仍未找到明确解释该程序的指南。 Okhttp 自定义信任在这里找到 okhttp似乎很有希望,但我不确定它是否实现相互 SSL 任何帮助或示例代码将不胜感激。

最佳答案

如果您可以在应用程序中加载证书,那么您需要的代码大致是

    val keyPair: KeyPair = ...
val certificate: X509Certificate = ...
val intermediates: Array<X509Certificate> = ...

val myClientCert = HeldCertificate(keyPair, certificate)

val m = HandshakeCertificates.Builder()
.addPlatformTrustedCertificates()
.heldCertificate(myClientCert, *intermediates)
.build()

val client = OkHttpClient.Builder()
.sslSocketFactory(m.sslSocketFactory(), m.trustManager)
.build()
这会间接将其复制到临时 key 存储中,这就是为什么您需要访问私钥字节的原因,从而降低了整体安全性。

关于android - Android中的OkHttp Mutual SSL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65283321/

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