在哪里可以找到我的FireFox配置文件? NSS在secmod.db中找不到外部安装的模块/令牌

时间:2016-11-04 08:24:51

标签: firefox pkcs#11 nss

注意:我找到了这个问题的答案,所以我会关闭它。这是因为返回FireFox配置文件文件夹的方法不起作用,它只是找到所有配置文件所在的目录,但不会进入我的配置文件文件夹。在此文件夹下(例如,/home/myUserName/.mozilla/firefox/,还有key3.dbcert8.dbsecmod.db,但它不包含任何特定于用户的设置,我猜他们作为创建所有个人资料的基础。这就是为什么他们没有包含我添加的模块。在这个文件夹下,我有5yasix1g.default-1475600224376我的个人资料所在的位置,并且'我的key3.dbcert8.dbsecmod.db所在的位置。

我在这里留下问题并更改标题,以警告喜欢我的人可能很难找到他们的FF档案。

我设法让NSS / JSS在我的Ubuntu 16.04中工作,但它只找到一个模块,默认的NSS内部模块。

我安装了这些模块:

enter image description here

我必须加载的是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

当它到达最后一行时,它只加载内部模块,而不是外部模块。

感谢任何帮助。谢谢!

1 个答案:

答案 0 :(得分:0)

我找到了这个问题的答案。

由于返回FireFox配置文件文件夹的方法不起作用,它只是找到所有配置文件所在的目录,但不会进入我的配置文件文件夹。在此文件夹下(例如,/home/myUserName/.mozilla/firefox/,还有key3.dbcert8.dbsecmod.db,但它们不包含任何特定于用户的设置,我猜他们作为创建所有配置文件的基础。这就是为什么它们不包含我添加的模块。

在此文件夹下,我有5yasix1g.default-1475600224376我的个人资料所在的位置,以及key3.dbcert8.dbsecmod.db所在的位置。

修改

轻松找到您的个人资料文件夹:

Firefox 帮助 - 疑难解答信息... ,在这里您可以看到&#34;个人资料目录&#34;,单击打开目录

或者,只需输入方向栏:

about:support