我正在编写一个需要SSL客户端身份验证的Android应用。我知道如何为桌面Java应用程序创建JKS密钥库,但是Android仅支持BKS格式。我尝试创建密钥库的每种方式都会导致以下错误:
handling exception: javax.net.ssl.SSLHandshakeException: null cert chain
这样看来,客户端永远不会发送正确的证书链,这可能是因为我没有正确创建密钥库。我无法像在台式机上那样启用SSL调试,因此这比应做的要困难得多。
作为参考,以下是创建BKS 信任库的命令:
keytool -importcert -v -trustcacerts -file "cacert.pem" -alias ca -keystore "mySrvTruststore.bks" -provider org.bouncycastle.jce.provider.BouncyCastleProvider -providerpath "bcprov-jdk16-145.jar" -storetype BKS -storepass testtest
这是我尝试过的无法创建BKS客户端密钥库的命令:
cat clientkey.pem clientcert.pem cacert.pem > client.pem
keytool -import -v -file <(openssl x509 -in client.pem) -alias client -keystore "clientkeystore" -provider org.bouncycastle.jce.provider.BouncyCastleProvider -providerpath "bcprov-jdk16-145.jar" -storetype BKS -storepass testtest
米脂