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), mais rien à faire ... En faite c'est surtout je ne sais pas que faire avec mon certificat, est-ce que c'est possible de dire au KeyStore ou au KeyManager de prendre ça en compte.
Voici un bout de mon code ou je créé mon KeyManagers.
En espérant que vous ayez déjà eu ce genre de problème
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 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()); alias = ((String)keyStore.aliases().nextElement()); privateKey = (PrivateKey)keyStore.getKey(alias, keyStorePassword.toCharArray()); java.security.cert.Certificate[] certs = keyStore.getCertificateChain(alias); //Création 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; }![]()
Partager