gpt4 book ai didi

java - 从 Java 访问 Firefox 的证书信任库

转载 作者:搜寻专家 更新时间:2023-11-01 03:42:48 28 4
gpt4 key购买 nike

我对这个几乎失去了希望。我正在尝试通过 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, /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)

您实际上可以看到“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.

但我不知道那是什么意思。值得注意的是,我在 32 位 Windows XP 和 64 位 Ubuntu 11.10 上得到了相同的行为。似乎 pkcs11.cfg 是正确的,就好像我更改任何路径一样,应用程序将因其他错误而失败。

有什么好的想法吗?

最佳答案

我最终通过使用 JSS4 Mozilla 库解决了这个问题。如果您想使用它,请确保您下载了 JSS4 JAR 以及 native 库实现以及它具有的其他依赖项 - NSPR 和 NSS native 库。

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

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

关于java - 从 Java 访问 Firefox 的证书信任库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10435836/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com