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?