palopalo Posté(e) 26 avril 2011 Share Posté(e) 26 avril 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 :) Lien vers le commentaire Partager sur d’autres sites More sharing options...
palopalo Posté(e) 29 avril 2011 Auteur Share Posté(e) 29 avril 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. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.