2016-11-04 2 views
0

ПРИМЕЧАНИЕ. Я нашел ответ на этот вопрос, чтобы закрыть его. Это связано с тем, что метод, возвращающий папку профиля 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 по умолчанию.

Я установлены эти модули:

enter image description here

То, что я должен загрузить, является то, что один из 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(); 

Когда он достигает последнюю строку, он загружает только внутренний модуль, а не мои внешние.

Любая помощь приветствуется. Благодаря!

ответ

0

Я нашел ответ на этот вопрос.

Это связано с тем, что метод, возвращающий папку профиля FireFox, не работает, он просто находит каталог, в котором находятся все профили, но не входит в мою папку профиля. И в этой папке (например, /home/myUserName/.mozilla/firefox/ есть также key3.db, cert8.db и secmod.db, но они не содержат никаких пользовательских настроек, и я думаю, они служат базой для создания всех профилей в момент их создания. они не содержащие мои добавленные модули.

в этой папке у меня есть 5yasix1g.default-1475600224376, где находится мой профиль, и это где мой key3.db, cert8.db и secmod.db расположены.

Редактировать

Чтобы легко найти свой профиль папку:

Firefox Помощь - Устранение информации ..., здесь вы видите "каталог Профиль", нажмите Открыть каталог.

Или просто введите в строку направления:

about:support 
Смежные вопросы