从Java访问Firefox的证书信任库
我几乎失去了对这个的希望.
我正试图通过PKCS#11使用Firefox安装附带的NSS库从 Java 7访问Firefox信任库. 这是代码: 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()); } } } 以下是PKCS#11配置的内容: name = NSS nssLibraryDirectory = /usr/lib/firefox/ nssSecmodDirectory = "/home/bogdan/.mozilla/firefox/x5d8wol9.default/" nssModule =trustanchors showInfo = true 当我运行应用程序时,我还设置了属性-Djava.library.path = /usr/lib / firefox / 当我运行应用程序时,我得到以下内容: NSS modules: [NSS Internal PKCS #11 Module (CRYPTO,/usr/lib/firefox/libsoftokn3.so,slot 0),NSS Internal PKCS #11 Module (KEYSTORE,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) 您实际上可以看到“trustanchors”模块未在初始化步骤中加载,但我不知道为什么.
但我不知道这意味着什么. 有什么好主意吗? 解决方法
我已经设法通过使用JSS4 Mozilla库来解决问题.如果要使用它,请确保下载JSS4 JAR以及本机库实现以及它具有的其他依赖项 – NSPR和NSS本机库.
确保在Linux上,本机库的位置在LD_LIBRARY_PATH中,在Windows上,它们的位置在%PATH%变量中. 其余信息在JSS4库的文档中,但您基本上需要使用org.mozilla.jss.CryptoManager类. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |