Envoyé par : gordjious
Date : 06/04/2007 15:50
je doit installer plusieurs dizaines de machines windows XP avec firefox question: peut on ajouter un certificat en local avec un fichier d'installation xpi
Envoyé par : snotling
Date : 11/04/2007 14:50
Si je comprends bien, une extension .XPI qui installerait un certificat dans la base des certificats de Firefox ?
L'interface XPCOM nsIX509CertDB devrait répondre à tes besoins : http://www.xulplanet.com/references/xpco(..)
Notamment la méthode importCertsFromFile(). Du genre :
var certdb = Components.classes["@mozilla.org/security/x509certdb;1"] .getService(Components.interfaces.nsIX509CertDB); // récupérer le fichier de certificat situé dans un dossier chrome:// de ton extension // -> par exemple: [http://developer.mozilla.org/en/docs/Code_snippets:File_I/O#Getting_your_extension.27s_folder] certdb.importCertsFromFile(null, file, Components.interfaces.nsIX509Cert.CA_CERT); // ou autre type que CA_CERT si ce n'est pas un certificat d'une autorité
Ça devrait marcher
N'hésite pas si tu as d'autres questions.
Envoyé par : gordjious
Date : 20/04/2007 15:14
j'ai compressé ce script avec les certificats dans un fichier .jar et je les aient placés dans le répertoire d'install /usr/lib/firefox/chrome avec son fichier .manifest. je l'ai testé aussi sur wind C:\program files\firefox\chrome
j'ai aussi essayer en placant le fichier .jar avec les fichiers d'installation rdf et manifest dans un xpi pas de résultat non plus
il est vrai que je suis débutant sur Xul et js
var certdb = Components.classes["@mozilla.org/security/x509certdb;1"] .getService(Components.interfaces.nsIX509CertDB); // récupérer le fichier de certificat situé dans un dossier chrome: // de ton extension // récupérer le répertoire AChrom = %installation%/chrome var file =Components.classes["@mozilla.org/file/directory_service;1"] .getService(Components.interfaces.nsIProperties) .get("AChrom", Components.interfaces.nsIFile); certdb.importCertsFromFile(null, file, Components.interfaces.nsIX509Cert.CA_CERT); // ou autre type que CA_CERT si ce n'est pas un certificat d'une autorité
Envoyé par : snotling
Date : 23/04/2007 12:32
Salut,
En fait, nsIX509CertDB.importCertsFromFile() n'a pas l'air d'être utilisable en mode "non graphique".
Je te conseille donc d'utiliser :
const BEGIN_CERT = "-----BEGIN CERTIFICATE-----"; const END_CERT = "-----END CERTIFICATE-----"; var certDB = Components.classes["@mozilla.org/security/x509certdb;1"] .getService(Components.interfaces.nsIX509CertDB2); var ioService = Components.classes["@mozilla.org/network/io-service;1"] .getService(Components.interfaces.nsIIOService); var scriptableStream = Components.classes["@mozilla.org/scriptableinputstream;1"] .getService(Components.interfaces.nsIScriptableInputStream); // http://www.mozilla.org/projects/security/pki/nss/tools/certutil.html var trustFlags = "C,C,C"; var channel = ioService.newChannel("file:///tmp/cert.pem", null, null); var input = channel.open(); scriptableStream.init(input); var certfile = scriptableStream.read(input.available()); scriptableStream.close(); input.close(); certfile = certfile.replace(/[\r\n]/g, ""); begin = certfile.indexOf(BEGIN_CERT); end = certfile.indexOf(END_CERT); cert = certfile.substring(begin + BEGIN_CERT.length, end); certDB.addCertFromBase64(cert, trustFlags, "" /* nickname: not taken into account! */);
Avec un certificat PEM codé en Base 64 bien sûr.
Quant à vérifier si un certificat a déjà été importé, là aussi j'ai du code si veux. Un peu "cracra" mais c'est dû à l'API Mozilla
Envoyé par : dahar
Date : 21/05/2007 18:09
Bonjour à tous, je cherche moi aussi a déployer le certificat de la boite sur notre intranet.
Comment exécuter ce script à l'installation de l'extension ? le script install.js ayant disparu ..
Cordialement,
DamienHardy
Envoyé par : lyesnet
Date : 22/05/2007 18:33
Bonjour a tous, voila moij 'ai envie d'installer des certificats utilisateurs en utilisant les composants xpcom. J'ai déja utiliser la methode importPKCS12File qui marche mais pour plein de raison je ne doit pas l'utilser. J'ai éssaié d'utiliser importCertsFromFile mais ca ne marche pas. Y a t il qlq 1 qui à réussi a installer ses certificats en utilisant d'autres mèthode ?
Envoyé par : snotling
Date : 04/06/2007 12:37
Utilise nsIX509CertDB2.addCertFromBase64() et là ça devrait marcher.
Envoyé par : sebbat
Date : 03/07/2007 11:06
J'ai beau chercher et faire des essais, je ne parviens pas à installer un certificat au moyen d'une extension.
Quelqu'un a-t-il eu plus de succès ?
Envoyé par : chBok
Date : 03/07/2007 14:10
Je n'ai pas testé (n'ayant pas de certificats à installer), mais il me semble que l'extension CCK permet de créer un XPI incluant des certificats.
Envoyé par : sebbat
Date : 04/07/2007 11:35
Exact, mais CCK ne fonctionne que sous Firefox, or je cherche à importer un certificat sous Thunderbird ( il est vrai que je ne l'avais pas précisé ).
Envoyé par : snotling
Date : 04/07/2007 18:42
L'appel à la méthode dont je t'ai parlée ne fonctionne-t-elle pas ?
Envoyé par : chBok
Date : 04/07/2007 20:24
sebbat a écrit:
Exact, mais CCK ne fonctionne que sous Firefox, or
je cherche à importer un certificat sous
Thunderbird ( il est vrai que je ne l'avais pas
précisé ).
Et pourquoi ne pas regarder (hacker ;) ) l'extension pour voir si les interfaces utilisées sont adaptables à Thunderbird ?
Envoyé par : mossroy
Date : 25/11/2014 10:18
D'abord merci pour cet extrait de code qui m'a bien rendu service. Par contre, il ne fonctionne plus a partir de Firefox 33, parce que le service Components.interfaces.nsIX509CertDB2 a ete supprime
Voici une version modifiee du script, qui fonctionne sur toutes les versions (a ce jour...), y compris la version 33 :
// Importe un certificat racine dans le magasin de certificats de Firefox // Le fichier doit etre depose dans le repertoire defaults/pref de Firefox // Source : http://xulfr.org/forums/read.php?1,8256 function importCert(certFileName) { const BEGIN_CERT = "-----BEGIN CERTIFICATE-----"; const END_CERT = "-----END CERTIFICATE-----"; var x509certdb = Components.classes["@mozilla.org/security/x509certdb;1"]; var certDB ; try { // Pour Firefox >=33 certDB = x509certdb.getService(Components.interfaces.nsIX509CertDB); } catch (exc) { // Pour Firefox <=32 certDB = x509certdb.getService(Components.interfaces.nsIX509CertDB2); } var ioService = Components.classes["@mozilla.org/network/io-service;1"] .getService(Components.interfaces.nsIIOService); var scriptableStream = Components.classes["@mozilla.org/scriptableinputstream;1"] .getService(Components.interfaces.nsIScriptableInputStream); // https://developer.mozilla.org/en-US/Add-ons/Code_snippets/File_I_O#Getting_special_files Components.utils.import("resource://gre/modules/FileUtils.jsm"); var certFile = FileUtils.getFile("PrfDef", [certFileName]); // http://www.mozilla.org/projects/security/pki/nss/tools/certutil.html var trustFlags = "C,C,C"; var channel = ioService.newChannelFromURI(ioService.newFileURI(certFile)); var input = channel.open(); scriptableStream.init(input); var certfile = scriptableStream.read(input.available()); scriptableStream.close(); input.close(); certfile = certfile.replace(/[\r\n]/g, ""); begin = certfile.indexOf(BEGIN_CERT); end = certfile.indexOf(END_CERT); cert = certfile.substring(begin + BEGIN_CERT.length, end); certDB.addCertFromBase64(cert, trustFlags, "");
}
Il n'est plus possible de poster des messages dans ce forum.
Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.
Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™
sont des marques de la fondation Mozilla.