palopalo Posted April 26, 2011 Share Posted April 26, 2011 Bonjour, J'ai actuellement un certificat chainé (3 parties) et avec ça j'essaie d'authentifier mon client. En observant les échanges à l'aide de WireShark, je constate que mon client n'envoie pas tout le certificat chainé, mais uniquement la 1ère partie. Ce qui empêche l'authentification du client. J'ai essayé de trouver une solution à l'aide de la méthode getCertificateChain(alias), qui me permet de vérifier si j'ai bien mes 3 parties de certificats. Maintenant, je ne sais pas comment lui dire d'envoyer les 3, car après vérification ils sont bien les 3 dans mon KeyStore (vu que je les affiches correctement). Voici un bout de mon code ou je créé mon KeyManagers. private KeyManager[] createKeyManagers(String keyStorePassword) throws CertificateException, IOException, KeyStoreException, NoSuchAlgorithmException, UnrecoverableKeyException { // Creation du KeyStore en specifiant l extension du certificat accepte KeyStore keyStore = KeyStore.getInstance("BKS"); // Creation d un Inputstream pour recupere le ficher KeyStore (ressource) InputStream inputstream = this.getResources().openRawResource(R.raw.mykeystore); // Initialise le Keystore avec le certificat de confiance et son mot de passe keyStore.load(inputstream, keyStorePassword.toCharArray()); // Recupre l'alias et la cle prive du certificat alias = ((String)keyStore.aliases().nextElement()); privateKey = (PrivateKey)keyStore.getKey(alias, keyStorePassword.toCharArray()); // Recupere les parties du certificats et les affiches java.security.cert.Certificate[] certs = keyStore.getCertificateChain(alias); for(int i=0;i<certs.length;i++) { Log.w(TAG, "Certs " + i + ": " + certs[i]); } //Creation du KeyManagerFactory et chargement du certificat dans celui ci KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm()); keyManagerFactory.init(keyStore, keyStorePassword.toCharArray()); KeyManager[] keyManager = keyManagerFactory.getKeyManagers(); return keyManager; } En espérant que vous ayez déjà eu ce genre de problème :) Link to comment Share on other sites More sharing options...
palopalo Posted April 29, 2011 Author Share Posted April 29, 2011 La seule solution que j'ai trouvé est de refaire le certificat client, signé par le certificat CA global et Root (comment avant), mais ne pas les chainer. Je n'ai pas réussis à trouver d'information pour savoir si Android ne supporte pas les certificats chainés ou s'il y a du code qui permet de l'avertir. Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.