ПРИМЕЧАНИЕ. Я нашел ответ на этот вопрос, чтобы закрыть его. Это связано с тем, что метод, возвращающий папку профиля FireFox, не работает, он просто находит каталог, в котором находятся все профили, но не вводит мой профиль. И под этой папкой (например, /home/myUserName/.mozilla/firefox/
, есть также key3.db
, cert8.db
и secmod.db
, но он не содержит никаких пользовательских настроек, и я полагаю, что они служат базой для создания всех профилей в момент их создания. они не содержащие мои добавленные модули. Под этой папке, я 5yasix1g.default-1475600224376
, где находится мой профиль, а вот где мой key3.db
, cert8.db
и secmod.db
расположены.Где мой профиль FireFox? NSS не может найти внешний установленный модуль/токен в secmod.db
Я оставляю этот вопрос здесь и изменить название, чтобы предупредить людей, как у меня могут возникнуть трудности с поиском, где находятся их профили FF.
Мне удалось заставить NSS/JSS работать в моем Ubuntu 16.04, но он находит только один модуль, внутренний NSS по умолчанию.
Я установлены эти модули:
То, что я должен загрузить, является то, что один из Izenpe и DNIe. Но когда я отлаживаю, он загружает только первый.
С modutil
поставляется с NSS/NSPR, я нашел то же самое. A проверка
modutil -list -dbdir /home/myUserName/.mozilla/firefox
только показывает один модуль.
(Другое дело, что значение -dbdir
«s должно заканчиваться в каталоге, где secmod.db
находится, а не сам файл, или modutil
кидает сообщения запутанной об ошибке, жалуясь:
modutil: function failed: SEC_ERROR_LEGACY_DATABASE: The certificate/key database is in an old, unsupported format.
)
I знаю, что я могу добавить их, и я это делаю, но это странно, что он указан в FireFox, но не в secmod.db
. Не является ли этот файл базой данных для всех установленных модулей, которые использует FF?
Кроме того, после добавления я не могу получить доступ к внешнему модулю. modutil -dbdir "/some/dir/properly/quoted" -list
показывает мне это:
[email protected]:~$ 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
Я использую этот код для загрузки PKCS # 11 Provider:
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
собственности в config
, я полагаю, что я могу загрузить только один модуль в Провайдере.
И с этим кодом я инициализировать CryptoManager
:
try {
InitializationValues iv = new InitializationValues(NSS_JSS_Utils.getFireFoxProfilePath());
iv.installJSSProvider = false;
CryptoManager.initialize(iv);
cm = CryptoManager.getInstance();
} catch (KeyDatabaseException | CertDatabaseException | GeneralSecurityException | NotInitializedException e) {
e.printStackTrace();
} catch (AlreadyInitializedException e) {
cm = CryptoManager.getInstance();
}
CustomPasswordCallback pcb = new CustomPasswordCallback();
cm.setPasswordCallback(pcb);
Enumeration<?> emModules = cm.getModules();
Когда он достигает последнюю строку, он загружает только внутренний модуль, а не мои внешние.
Любая помощь приветствуется. Благодаря!