gpt4 book ai didi

Android OkHttp TLS Mutual Auth - 客户端不向服务器发送证书

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

我需要一些有关 Android OkHttp 客户端/服务器应用程序的帮助。问题如下:似乎我的 Android 客户端在收到证书请求后没有向服务器发送任何证书。
这是我的安卓代码:

private static SSLContext getContext(InputStream keystoreInputStream){
SSLContext sslContext = null;
try{
//==========
try {
// The keystore contains the CA cert and the Client cert
KeyStore keyStore = KeyStore.getInstance("PKCS12");
try {
keyStore.load(keystoreInputStream, "MYPASS".toCharArray());
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
ksIn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
sslContext = SSLContext.getInstance("TLS");
String tmfAlgorithm = TrustManagerFactory.getDefaultAlgorithm();
TrustManagerFactory tmf = TrustManagerFactory.getInstance(tmfAlgorithm);
tmf.init(keyStore);

KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance("X509");
keyManagerFactory.init(keyStore, "MYPASS".toCharArray());
sslContext.init(keyManagerFactory.getKeyManagers(), tmf.getTrustManagers(), null);
} catch (Exception e) {
e.printStackTrace();
}
//==========
}catch (Exception e){

}
return sslContext;
}
这是Android客户端(192.168.1.72)和服务器(192.168.1.79)之间的wireshark session :
Wireshark TLS session - CLIENT CERTIFICATE (empty)
如您所见,服务器发送证书请求,但客户端发送长度为 0 的证书。您能解释一下如何解决这个问题吗?谢谢。

最佳答案

我终于发现问题出在我的 KeyStore 和 TrustStore 文件中,它们只是格式错误。
我只是尝试使用这些简单的段落重新生成它们:

  • 创建一个包含您的客户端证书和 key 的 txt 文件(只需将 key 复制粘贴到证书之后)。
  • 生成 keystore :openssl pkcs12 -export -in <GENERATED_TXT_FILE> -out <MY_KEY_STORE>.pkcs12 -name <ALIAS> -noiter -nomaciter
  • 生成信任库:keytool -import -file <CA_CERT_FILE> -alias <ALIAS> -keystore <MY_TRUST_STORE>

  • 我还提到了 SSLTrustManagerHelper 的这个实现: SSLTrustManagerHelper class ,我把它留在这里,因为我发现它干净且易于理解。

    关于Android OkHttp TLS Mutual Auth - 客户端不向服务器发送证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66352098/

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