Ejemplo de listado del almacén de certificados de Firefox

El objetivo de este ejemplo es mostrar los pasos necesarios para realizar el listado completo del almacén de certificados del Firefox. El programa de ejemplo extiende el ejemplo de listado genérico implementando aquellos métodos abstractos que lo hacen específico para el tipo de almacén de Firefox. El código completo del ejemplo se puede ver aquí. También se puede ver el Javadoc asociado al ejemplo aquí.

La implementación del método abstracto getPKStoreManager() de la clase GenericCertificateStoreListing de la que hereda este ejemplo es la siguiente:

@Override
protected IPKStoreManager getPKStoreManager() {
    return new MozillaStore(MOZILLA_PROFILE_DIRECTORY);
}

Como se puede ver, el constructor de la clase MozillaStore recibe la ruta del directorio asociado al perfil del firefox. Dicha ruta, que en el ejemplo aparece como una constante, es dependendiente del sistema operativo. En los sistemas más comunes es la siguiente:

  • Windows:
    C:/Documents and Settings/<<usuario>>/Datos de programa/Mozilla/Firefox/Profiles/<<perfil>>
    
  • Linux:
    ~/.mozilla/firefox/<<perfil>>
    

    Donde ~ se corresponde con el home del usuario.

    Si lo desea, puede obtener la ruta del perfil de Firefox creando un archivo HTML con el siguiente código y abriéndolo con el navegador Firefox.

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
            <title>Obtener Directorio del Profile de Mozilla</title>
            <script language=javascript type=text/javascript>
            <!--
                function getProfile() {
                    var mozillaProfile = ""; 
                    if (navigator.appName == "Netscape") {
                        try {
                            netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
                            mozillaProfile = Components.classes["@mozilla.org/file/directory_service;1"].getService(Components.interfaces.nsIProperties).get("ProfD", Components.interfaces.nsIFile).path
                            return mozillaProfile.replace(/\\/g,"/");
                        } catch (e) {
                            alert("No nos ha autorizado a recoger datos especificos de su navegador:" + e);
                            alert("La solicitud no podra ser procesada");
                            return "";
                        }
                    } else {
                        alert ("Esta pagina debe ser ejecutada desde un nagegador Mozilla");return "";
                    }
                }
            // -->
            </script>
        </head>
        <body onload="getProfile">
            <form name="entrada" id="entrada">
                <table align="center" cellpadding="10" cellspacing="2">
                    <tr colspan="2">
                        <th>Como obtener la ruta del perfil de Mozilla</th>
                    </tr>
                    <tr><td colspan="2">&nbsp;</td></tr>
                    <tr>
                        <td colspan="2">
                            <ol>
                                <li>Ejecutar esta p&aacute;gina desde un navegador Mozilla</li>
                                <li>Pulsar el boton <b>Consultar</b> de la p&aacute;gina para obtener el directorio actual.</li>
                            </ol>
                        </td>
                    </tr>
                    <tr>
                        <td><input type="button" value="Consultar" onclick="document.forms[0].txtMozillaProfile.value=getProfile();" style="border:1px solid black"></td>
                    </tr>
                    <tr>
                        <td colspan="2"><b>Directorio actual: </b></td>
                    </tr>
                    <tr>
                        <td><input id="txtMozillaProfile" type="text" size="100" name="txtMozillaProfile" style="border:1px solid black"></td>
                    </tr>
                </table>
            </form> 
        </body>
    </html>