Bonjour à tous,
Y-a-t-il un moyen simple pour connaitre si un certificat (java.security.cert.Certificate ou java.security.cert.X509Certificate) est un certificat d'autorité ou un certificat utilisateur ?
Je veux lister les certificats stockés dans un magasin de certificats (Windows-My pour windows et le trousseau de clés keychainstore sous MAC OS).
Un exemple de code qui charge le Keystore windows avec SunMSCAPI:
La méthode Keystore.isKeyEntry(aliasKey) permet de savoir si le certificat est un certificat enregistré avec une PrivateKey.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 KeyStore ks = KeyStore.getInstance("Windows-MY"); ks.load(null, null) ; Enumeration en = ks.aliases() ; while (en.hasMoreElements()) { String aliasKey = (String)en.nextElement() ; Certificate c = ks.getCertificate(aliasKey) ; System.out.println("---> alias : " + aliasKey) ; // CE QUE JE VEUX : if( c est un certificat autorité CA ) continue; }
Cela marche bien sous windows mais pas sous Mac OS (avec le keystore chargé dans "KeychainStore" et "Apple").
Mon code doit fonctionner pour les 2 OS.
Est-ce qu'il existe une méthode pour déterminer si un certificat est un CA ou pas ?
Je n'ai pas forcément tous les certificats intermédiaires dans le magasin mais j'en ai quand même quelques un ...
Merci de votre aide !
Partager