加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

从Java访问Firefox的证书信任库

发布时间:2020-12-15 02:33:59 所属栏目:Java 来源:网络整理
导读:我几乎失去了对这个的希望. 我正试图通过PKCS#11使用Firefox安装附带的NSS库从 Java 7访问Firefox信任库. 这是代码: import java.security.KeyStore;import java.security.Security;import java.util.Enumeration;import sun.security.pkcs11.SunPKCS11;pub
我几乎失去了对这个的希望.
我正试图通过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”模块未在初始化步骤中加载,但我不知道为什么.
这里的文档:http://docs.oracle.com/javase/6/docs/technotes/guides/security/p11guide.html#NSS说

The trustanchors module enables access to NSS trust anchor
certificates via the PKCS11 KeyStore,if secmod.db has been configured
to include the trust anchor library.

但我不知道这意味着什么.
值得注意的是,我对Windows XP 32位和Ubuntu 11.10 64位都有相同的行为.
似乎pkcs11.cfg是正确的,好像我改变了应用程序因其他错误而失败的任何路径.

有什么好主意吗?

解决方法

我已经设法通过使用JSS4 Mozilla库来解决问题.如果要使用它,请确保下载JSS4 JAR以及本机库实现以及它具有的其他依赖项 – NSPR和NSS本机库.

确保在Linux上,本机库的位置在LD_LIBRARY_PATH中,在Windows上,它们的位置在%PATH%变量中.
您可能想要使用Firefox发行版附带的DLL / SO.这在我发现的Windows上不起作用(与我认为它们是为WIN95平台编译的事实有关)

其余信息在JSS4库的文档中,但您基本上需要使用org.mozilla.jss.CryptoManager类.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读