FireFox et certificats clients sur Android.
Modérateurs : myahoo, nico@nc, Mori, jpj
FireFox et certificats clients sur Android.
Bonjour,
dans le cadre d'une application web qui nécessite une authentification par certificat client, je rencontre un problème avec FireFox Mobile (v23).
En effet, j'ai importé le certificat sur le smartphone Android sans aucun problème, et quand je teste la connexion au site avec Chrome, celui-ci me présente un choix de certificats clients que je peux utiliser. Je sélectionne donc le bon certificat et tout fonctionne parfaitement.
En revanche, quand je fais le même test sur Firefox : impossible de me connecter au serveur.
On dirait que Firefox ne trouve pas le certificat. En tout cas, il ne me demande pas lequel utiliser et du coup j’obtiens le message d'erreur suivant : Error code : ssl_error_handshake_failure_alert.
Avez-vous une solution pour importer ce certificat dans Firefox Mobile et l'utiliser ?
Merci d'avance !
Votre Navigateur : Mozilla/5.0 (Windows NT 6.1; rv:22.0) Gecko/20100101 Firefox/22.0
dans le cadre d'une application web qui nécessite une authentification par certificat client, je rencontre un problème avec FireFox Mobile (v23).
En effet, j'ai importé le certificat sur le smartphone Android sans aucun problème, et quand je teste la connexion au site avec Chrome, celui-ci me présente un choix de certificats clients que je peux utiliser. Je sélectionne donc le bon certificat et tout fonctionne parfaitement.
En revanche, quand je fais le même test sur Firefox : impossible de me connecter au serveur.
On dirait que Firefox ne trouve pas le certificat. En tout cas, il ne me demande pas lequel utiliser et du coup j’obtiens le message d'erreur suivant : Error code : ssl_error_handshake_failure_alert.
Avez-vous une solution pour importer ce certificat dans Firefox Mobile et l'utiliser ?
Merci d'avance !
Votre Navigateur : Mozilla/5.0 (Windows NT 6.1; rv:22.0) Gecko/20100101 Firefox/22.0
Re: FireFox et certificats clients sur Android.
Cette fonctionnalité n'existe pas dans Firefox, il faut donc créer une extension (xpi). Celle d' oernii (oernii-cert-manager) ne fonctionnant plus depuis la version 13, je vous propose cet exemple (testée sur FF Android v24):
Une fois installé, une fenêtre vous demande de sélectionner le certificat utilisateur. puis une autre pour le mot de passe .
@+
Votre Navigateur : Mozilla/5.0 (Windows NT 6.1; rv:22.0) Gecko/20100101 Firefox/22.0
Code : Tout sélectionner
// MAIN.JS
const {Cc, Ci, Cu} = require("chrome");
var {XPCOMUtils} = Cu.import("resource://gre/modules/XPCOMUtils.jsm");
var self = require("sdk/self");
var preferences;
function installCert(CertName, CertTrust) {
var gIOService = Cc["@mozilla.org/network/io-service;1"].getService(Ci.nsIIOService);
var certDB = Cc["@mozilla.org/security/x509certdb;1"].getService(Ci.nsIX509CertDB2);
var scriptableStream = Cc["@mozilla.org/scriptableinputstream;1"].getService(Ci.nsIScriptableInputStream);
var channel = gIOService.newChannel(self.data.url(CertName), null, null);
var input = channel.open();
scriptableStream.init(input);
var certfile = scriptableStream.read(input.available());
scriptableStream.close();
input.close();
var beginCert = "-----BEGIN CERTIFICATE-----";
var endCert = "-----END CERTIFICATE-----";
certfile = certfile.replace(/[\r\n]/g, "");
var begin = certfile.indexOf(beginCert);
var end = certfile.indexOf(endCert);
var cert = certfile.substring(begin + beginCert.length, end);
try {
certDB.addCertFromBase64(cert, CertTrust, "");
}catch(ex)
{
console.log(ex);
}
}
function importUSERcert () {
var wm = Cc["@mozilla.org/appshell/window-mediator;1"].getService(Ci.nsIWindowMediator);
var browserWindow = wm.getMostRecentWindow('navigator:browser');
var certDB = Cc["@mozilla.org/security/x509certdb;1"].getService(Ci.nsIX509CertDB);
var filePicker = Cc[ "@mozilla.org/filepicker;1" ].createInstance(Ci.nsIFilePicker);
filePicker.init( browserWindow, "Import Certificate", Ci.nsIFilePicker.modeOpen );
filePicker.appendFilter( "Certificat","*.p12");
var result = filePicker.open(function(e){
if (e==Ci.nsIFilePicker.returnOK)
{
var theFile = filePicker.file;
certDB.importPKCS12File(null, theFile);// On n'a pas de retour sur la réussite
preferences.setBoolPref("installed", true);// Par défaut on dit que l'opération est réussie.
}
});
}
exports.main = function() {
// L'EXTENSION ETANT EXECUTEE A CHAQUE CREATION D'ONGLET, ON STOCKE UNE VALEUR DANS LES PREFERENCES POUR S'ASSURER QUE L'ACTION N'A PAS DEJA ETE EXECUTEE.
preferences = Cc["@mozilla.org/preferences-service;1"].getService(Ci.nsIPrefService).getBranch("extensions.monextension.xpi@jetpack.");
var installed = false;
try{
installed =preferences.getBoolPref("installed");
}
catch(ex){
installed =false;
preferences.setBoolPref("installed", false);
}
//console.log(installed);
if (!installed)
{
installCert("CA.crt", "C,c,c");// LA CHAINE DE CONFIANCE DOIT-ETRE DANS LES RESSOURCES DE L'EXTENSION
importUSERcert(); // Ici on importe un certificat utilisateur
}
}
@+
Votre Navigateur : Mozilla/5.0 (Windows NT 6.1; rv:22.0) Gecko/20100101 Firefox/22.0
Re: FireFox et certificats clients sur Android.
Un bug a été traité sur l'utilisation des certificats clients
https://bugzilla.mozilla.org/show_bug.cgi?id=921477
status-firefox26: --- → affected
status-firefox24: --- → affected
status-firefox27: --- → fixed
status-firefox25: --- → affected
On peut donc utiliser les certificats clients de la version 19 à 23 et à partir de la 27.
Votre Navigateur : Mozilla/5.0 (Windows NT 6.1; rv:22.0) Gecko/20100101 Firefox/22.0
https://bugzilla.mozilla.org/show_bug.cgi?id=921477
status-firefox26: --- → affected
status-firefox24: --- → affected
status-firefox27: --- → fixed
status-firefox25: --- → affected
On peut donc utiliser les certificats clients de la version 19 à 23 et à partir de la 27.
Votre Navigateur : Mozilla/5.0 (Windows NT 6.1; rv:22.0) Gecko/20100101 Firefox/22.0
Qui est en ligne ?
Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 17 invités