J'écris une application Android qui nécessite une authentification client SSL. Je sais comment créer un keystore JKS pour une application Java de bureau, mais Android ne prend en charge que le format BKS. Toutes les méthodes que j'ai utilisées pour créer le keystore aboutissent à l'erreur suivante :handling exception: javax.net.ssl.SSLHandshakeException: null cert chain
Il semble donc que le client n'envoie jamais une chaîne de certificats correcte, probablement parce que je ne crée pas le keystore correctement. Je ne suis pas en mesure d'activer le débogage SSL comme je peux le faire sur le bureau, ce qui rend les choses beaucoup plus difficiles qu'elles ne devraient l'être.
Pour référence, voici la commande qui fonctionne pour créer un BKS. truststore :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
Voici la commande que j'ai essayée et qui ne fonctionne PAS pour créer un client BKS. keystore :
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
19 votes
Sérieusement, personne n'a d'expérience avec le format BKS ? Argh, pourquoi Android ne pourrait-il pas simplement utiliser le format standard JKS, ou au moins documenter ce format puisque c'est tout ce qu'ils supportent ? Cela devrait être simple...