注意:我找到了这个问题的答案,所以我会关闭它。这是因为返回FireFox配置文件文件夹的方法不起作用,它只是找到所有配置文件所在的目录,但不会进入我的配置文件文件夹。在此文件夹下(例如,/home/myUserName/.mozilla/firefox/
,还有key3.db
,cert8.db
和secmod.db
,但它不包含任何特定于用户的设置,我猜他们作为创建所有个人资料的基础。这就是为什么他们没有包含我添加的模块。在这个文件夹下,我有5yasix1g.default-1475600224376
我的个人资料所在的位置,并且'我的key3.db
,cert8.db
和secmod.db
所在的位置。
我在这里留下问题并更改标题,以警告喜欢我的人可能很难找到他们的FF档案。
我设法让NSS / JSS在我的Ubuntu 16.04中工作,但它只找到一个模块,默认的NSS内部模块。
我安装了这些模块:
我必须加载的是Izenpe和DNIe之一。但是当我调试时,它只加载第一个。
随着NSS / NSPR附带modutil
,我发现了相同的内容。检查
modutil -list -dbdir /home/myUserName/.mozilla/firefox
仅显示一个模块。
(另一件事是-dbdir
的值应该以{{1}}所在的目录结束,而不是文件本身,或者secmod.db
会引发令人困惑的错误消息,抱怨:
modutil
)
我知道我可以添加它们而且我正在这样做,但它在FireFox中列出但在modutil: function failed: SEC_ERROR_LEGACY_DATABASE: The certificate/key database is in an old, unsupported format.
中没有列出,这很奇怪。这个文件不是FF使用的所有已安装模块的数据库吗?
此外,添加后,我无法访问外部模块。 secmod.db
向我展示了这一点:
modutil -dbdir "/some/dir/properly/quoted" -list
我使用此代码加载PKCS#11提供程序:
easternfox@easternfox-Ubuntu:~$ modutil -dbdir /home/easternfox/.mozilla/firefox -list
Listing of PKCS #11 Modules
-----------------------------------------------------------
1. NSS Internal PKCS #11 Module
slots: 2 slots attached
status: loaded
slot: NSS Internal Cryptographic Services
token: NSS Generic Crypto Services
slot: NSS User Private Key and Certificate Services
token: NSS Certificate DB
2. Izenpe PKCS#11
library name: /usr/lib/libbit4ipki.so
slots: 1 slot attached
status: loaded
slot: Cherry GmbH SmartBoard XX44 [Smart Card Reader USB] 00 00
token: Izenpe 0
假设在if (OSUtil.isLinux()) {
String config = "library=/usr/lib/i386-linux-gnu/nss/libsoftokn3.so\n"
+ "name=NSSCrypto-Firma\n"
+ "attributes=compatibility\n"
+ "slot=2\n"
+ "showInfo=true\n"
+ "allowSingleThreadedModules=true\n"
+ "nssArgs=\"configdir='" + NSS_JSS_Utils.getFireFoxProfilePath() + "' certPrefix='' keyPrefix='' secmod='secmod.db' + flags='readOnly'\" ";
Provider provider = new SunPKCS11(new ByteArrayInputStream(config.getBytes()));
Security.removeProvider("IAIK");
//Security.addProvider(provider);
Security.insertProviderAt(provider, 1);
KeyStore.Builder builder = null;
prevTryFailes = true;
try {
if (tries < 3 && prevTryFailes) {
keystore = KeyStore.getInstance("PKCS11", provider);
builder = KeyStore.Builder.newInstance("PKCS11", provider, new KeyStore.CallbackHandlerProtection(new UtilTarjetas(). new callback()));
keystore = builder.getKeyStore();
prevTryFailes = false;
}
if (tries >= 3) {
throw new KeyStoreException("Have entered 3 times password and not correct. ");
}
} catch (Exception e) {
Traza.error(e);
tries ++;
}
}
中指定多个name
属性时抛出异常,我想我只能在Provider中加载一个模块。
并且,使用这些代码我初始化config
:
CryptoManager
当它到达最后一行时,它只加载内部模块,而不是外部模块。
感谢任何帮助。谢谢!
答案 0 :(得分:0)
我找到了这个问题的答案。
由于返回FireFox配置文件文件夹的方法不起作用,它只是找到所有配置文件所在的目录,但不会进入我的配置文件文件夹。在此文件夹下(例如,/home/myUserName/.mozilla/firefox/
,还有key3.db
,cert8.db
和secmod.db
,但它们不包含任何特定于用户的设置,我猜他们作为创建所有配置文件的基础。这就是为什么它们不包含我添加的模块。
在此文件夹下,我有5yasix1g.default-1475600224376
我的个人资料所在的位置,以及key3.db
,cert8.db
和secmod.db
所在的位置。
修改强>
轻松找到您的个人资料文件夹:
Firefox 帮助 - 疑难解答信息... ,在这里您可以看到&#34;个人资料目录&#34;,单击打开目录。
或者,只需输入方向栏:
about:support