Je perds presque espoir sur celui-ci. J'essaie d'accéder au magasin de confiance Firefox à partir de Java 7 en utilisant les bibliothèques NSS fournies avec l'installation de Firefox, via PKCS # 11.Accéder au certificat de confiance de Firefox à partir de Java
Voici le code:
import java.security.KeyStore;
import java.security.Security;
import java.util.Enumeration;
import sun.security.pkcs11.SunPKCS11;
public class Test {
public static void main(String[] args) throws Exception {
String configName = "pkcs11.cfg";
SunPKCS11 p = new SunPKCS11(configName);
Security.addProvider(p);
KeyStore ks = KeyStore.getInstance("PKCS11", p);
ks.load(null, "apassword".toCharArray());
System.out.println("Size: " + ks.size());
Enumeration<String> aliases = ks.aliases();
while (aliases.hasMoreElements()) {
System.out.println(aliases.nextElement());
}
}
}
Voici le contenu PKCS # 11 config:
name = NSS
nssLibraryDirectory = /usr/lib/firefox/
nssSecmodDirectory = "/home/bogdan/.mozilla/firefox/x5d8wol9.default/"
nssModule =trustanchors
showInfo = true
Quand je lance l'application, je mets aussi la propriété -Djava.library.path=/usr/lib/firefox/
Lorsque Je cours l'application que je reçois ce qui suit:
NSS modules: [NSS Internal PKCS #11 Module (CRYPTO, /usr/lib/firefox/libsoftokn3.so, slot 0), NSS Internal PKCS #11 Module (KEYSTORE, /usr/lib/firefox/libsoftokn3.so, slot 1)]
Exception in thread "main" java.security.ProviderException: NSS module not available: trustanchors
at sun.security.pkcs11.SunPKCS11.<init>(SunPKCS11.java:271)
at sun.security.pkcs11.SunPKCS11.<init>(SunPKCS11.java:103)
at Test.main(Test.java:11)
Vous pouvez voir que le module "trustanchors" n'est pas chargé lors de l'initialisation, mais je ne sais pas pourquoi. La documentation ici: dit que
Le module trustanchors permet d'accéder à l'ancre de confiance NSS certificats via le PKCS11 KeyStore, si secmod.db a été configuré pour inclure la bibliothèque d'ancrage de confiance.
mais je n'ai aucune idée de ce que cela signifie. Il convient de noter que j'ai le même comportement avec Windows XP 32 bits et Ubuntu 11.10 64 bits. Il semble que le fichier pkcs11.cfg soit correct, comme si je modifiais l'un des chemins d'accès à l'application avec d'autres erreurs.
Des idées brillantes?
pour savoir ce que secmod.db est? http://www.mozilla.org/projects/security/pki/nss/tools/modutil.html – mazaneicha
Le module de certificat racine apparaît si je le liste avec 'modutil -list -dbdir /home/bogdan/.mozilla/firefox/x5d8wol9.default/' – Bogdan
Je pense que le problème est lié au fait qu'il pense que ce module utilise la bibliothèque" /home/bogdan/.mozilla/firefox/x5d8wol9.default/libnssckbi.so ", mais ce fichier doesn ' t existe. J'ai essayé de le copier là et maintenant je reçois cet échec: 'Exception dans le fil" principal "java.security.ProviderException: Bibliothèque /usr/lib/firefox/home/bogdan/.mozilla/firefox/x5d8wol9.default/libnssckbi.so n'existe pas »(remarquez le chemin bizarre qui est une concaténation avec LD_LIBRARY_PATH) – Bogdan