Uzyskaj dostęp do magazynu zaufanych certyfikatów Firefoksa z Java

Prawie tracę nadzieję na ten. Próbuję uzyskać dostęp do magazynu zaufania Firefox z poziomu Java 7 za pomocą bibliotek NSS dostarczanych z instalacją Firefoksa za pośrednictwem PKCS # 11.

Oto kod:

<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());
        }
    }
}
</code>

Oto zawartość konfiguracji PKCS # 11:

<code>name = NSS
nssLibraryDirectory = /usr/lib/firefox/
nssSecmodDirectory = "/home/bogdan/.mozilla/firefox/x5d8wol9.default/"
nssModule =trustanchors
showInfo = true
</code>

Po uruchomieniu aplikacji ustawiam również właściwość-Djava.library.path=/usr/lib/firefox/

Po uruchomieniu aplikacji otrzymuję następujące informacje:

<code>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)
</code>

Możesz zobaczyć, że moduł „trustanchors” nie został załadowany w kroku inicjalizacji, ale nie mam pojęcia dlaczego. Dokumentacja tutaj:http://docs.oracle.com/javase/6/docs/technotes/guides/security/p11guide.html#NSS mówi że

Moduł trustanchors umożliwia dostęp do certyfikatów kotwiczenia zaufania NSS za pośrednictwem magazynu kluczy PKCS11, jeśli secmod.db został skonfigurowany tak, aby zawierał bibliotekę zakotwiczenia zaufania.

ale nie mam pojęcia, co to znaczy. Warto zauważyć, że mam takie samo zachowanie zarówno w 32-bitowym systemie Windows XP, jak iw 64-bitowym systemie Ubuntu 11.10. Wygląda na to, że pkcs11.cfg jest poprawny, tak jakbym zmienił dowolną ze ścieżek, w których aplikacja zawiedzie z innymi błędami.

Jakieś jasne pomysły?

questionAnswers(1)

yourAnswerToTheQuestion