2016-11-04 2 views
0

NOTE: J'ai trouvé la réponse à cette question, donc je la ferais. Cela est dû au fait que la méthode renvoyant le dossier de profil FireFox ne fonctionne pas, elle localise simplement le répertoire dans lequel se trouvent tous les profils, mais n'entre pas mon dossier. Et sous ce dossier (par exemple, /home/myUserName/.mozilla/firefox/, il y a aussi key3.db, cert8.db et secmod.db, mais il ne contient aucun paramètre spécifique à l'utilisateur, et je suppose qu'ils servent de base pour créer tous les profils au moment où ils sont créés. ils ne sont pas contenant des mes modules ajoutés. Dans ce dossier, je 5yasix1g.default-1475600224376 où mon profil est situé, et c'est où mon key3.db, cert8.db et secmod.db sont situés.Où trouver mon profil FireFox? NSS ne trouve pas le module/jeton externe installé dans secmod.db

Je laisse la question ici et changer le titre pour avertir les gens qui comme moi, j'ai peut-être des difficultés à trouver où sont leurs profils FF


J'ai réussi à faire fonctionner NSS/JSS dans mon Ubuntu 16.04, mais il ne trouve qu'un seul module, le NSS interne par défaut.

J'ai ces modules installés:

enter image description here

Ce que je dois charger, est que l'un des Izenpe et DNIe. Mais quand je débogue, il ne charge que le premier.

Avec modutil livré avec NSS/NSPR, j'ai trouvé la même chose. Une vérification de

modutil -list -dbdir /home/myUserName/.mozilla/firefox 

ne montre qu'un seul module.

(Une autre chose est que la valeur de -dbdir doit se terminer par le répertoire où secmod.db est situé, pas le fichier lui-même, ou modutil jette un message d'erreur confus, se plaignant:

modutil: function failed: SEC_ERROR_LEGACY_DATABASE: The certificate/key database is in an old, unsupported format. 

)

I Je sais que je peux les ajouter et je le fais, mais c'est bizarre qu'il soit listé dans FireFox mais pas dans secmod.db. Ce fichier n'est-il pas la base de données pour tous les modules installés que FF utilise?

De plus, après l'avoir ajouté, je ne peux pas accéder au module externe. modutil -dbdir "/some/dir/properly/quoted" -list me montre ceci:

[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 

J'utilise ce code pour charger le PKCS # 11 Fournisseur:

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 ++; 
    } 
} 

En supposant d'une exception levée lors de la spécification plus d'une fois la propriété name dans le config, je suppose que je ne peux charger qu'un seul module dans le fournisseur.

Et, avec ce code, j'initialiser le 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(); 

Quand il arrive à la dernière ligne, il ne charge que le module interne, pas à mes externes.

Toute aide est appréciée. Merci!

Répondre

0

J'ai trouvé la réponse à cette question. C'est dû au fait que la méthode retournant le dossier de profil FireFox ne fonctionne pas, elle localise juste le répertoire où se trouvent tous les profils, mais n'entre pas dans mon dossier de profil. Et sous ce dossier (par exemple, /home/myUserName/.mozilla/firefox/, il y a aussi key3.db, cert8.db et secmod.db, mais ils ne contiennent aucun paramètre spécifique à l'utilisateur, et je suppose qu'ils servent de base pour créer tous les profils au moment où ils sont créés. ils ne sont pas mes modules ajoutés contenant des.

Dans ce dossier, je 5yasix1g.default-1475600224376 où mon profil est situé, et c'est où mon key3.db, cert8.db et secmod.db sont situés.

Modifier

Pour trouver facilement votre dossier de profil:

Firefox Aide - Informations de dépannage ..., ici vous voyez "répertoire de profil", cliquez sur Ouvrir le répertoire .

Ou, il suffit de taper dans la barre de direction:

about:support