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:
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!