Acessar o armazenamento confiável de certificados do Firefox a partir de Java

Estou quase perdendo a esperança neste. Estou tentando acessar o armazenamento confiável do Firefox a partir do Java 7 usando as bibliotecas do NSS que vêm com a instalação do Firefox, via PKCS # 11.

Aqui está o código:

<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>

Aqui estão os conteúdos para a configuração do PKCS # 11:

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

Quando executo o aplicativo, também configuro a propriedade-Djava.library.path=/usr/lib/firefox/

Quando executo o aplicativo, recebo o seguinte:

<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>

Você pode realmente ver que o módulo "trustanchors" não está carregado na etapa de inicialização, mas não tenho idéia do motivo. A documentação aqui:http://docs.oracle.com/javase/6/docs/technotes/guides/security/p11guide.html#NSS diz que

O módulo trustanchors permite acesso aos certificados de âncora de confiança do NSS por meio do KeyStore PKCS11, se secmod.db tiver sido configurado para incluir a biblioteca de âncora de confiança.

mas não tenho ideia do que isso significa. Vale a pena notar que obtenho o mesmo comportamento tanto com o Windows XP de 32 bits quanto com o Ubuntu 11.10 de 64 bits. Parece que o pkcs11.cfg está correto como se eu alterasse qualquer um dos caminhos que o aplicativo irá falhar com outros erros.

Alguma ideia brilhante?

questionAnswers(1)

yourAnswerToTheQuestion