¿Cómo hacer que Firefox confíe en los certificados de CA del sistema?

29

Nuestro administrador de red recientemente habilitó la inspección HTTPS en nuestro firewall / enrutador. Para los usuarios de IE esto está bien porque todos los certificados se han distribuido a través de Active Directory para máquinas unidas al dominio. Sin embargo, tenemos una serie de usuarios de Firefox que ahora arrojan errores de certificado en prácticamente todos los sitios HTTPS.

Firefox usa su propia tienda de CA, y también están muy orgullosos de ello . ¿Hay alguna forma de hacer que Firefox confíe en el almacén de certificados del sistema de forma predeterminada? Veo muchas publicaciones sobre cómo hacer esto en Linux, pero nada para Windows.

Sospecho de esta publicación que no es posible, pero esa publicación tiene casi 4 años.

Wes Sayeed
fuente

Respuestas:

46

Desde Firefox 49, hay cierto soporte para certificados CA de Windows y soporte para certificados raíz empresariales proporcionados por Active Directory desde Firefox 52. También se admite en macOS para leer desde el Llavero desde la versión 63.

Desde Firefox 68, esta función está habilitada de forma predeterminada en la versión ESR (empresa), pero no en la versión rápida (estándar).

Puede habilitar esta función para Windows y macOS about:configcreando este valor booleano:

security.enterprise_roots.enabled

y ponerlo a true.

Para GNU / Linux, esto generalmente es administrado por p11-kit-trust y no se necesita ningún indicador.

Implementar el sistema de configuración en todo

Desde Firefox 64, hay una forma nueva y recomendada mediante el uso de políticas, documentadas en https://support.mozilla.org/en-US/kb/setting-certificate-authorities-firefox

Para versiones heredadas, la carpeta de instalación de Firefox se puede recuperar del registro de Windows, luego vaya al defaults\pref\subdirectorio y cree un nuevo archivo con lo siguiente:

/* Allows Firefox reading Windows certificates */    
pref("security.enterprise_roots.enabled", true);

Guárdelo con la .jsextensión, por ejemplo, trustwincerts.jsy reinicie Firefox. La entrada aparecerá about:configpara todos los usuarios.

Implementación de certificados de Windows en todo el sistema

En Firefox desde 49 hasta 51, solo es compatible con la tienda "Root". Desde Firefox 52, es compatible con otras tiendas, incluidas las agregadas desde el dominio a través de AD.

Esto está un poco fuera de alcance, pero explica cuál fue el único almacén de certificados admitido por Firefox para las versiones 49 a 51 o solo para pruebas locales. Debido a que esto se implementa para todos los usuarios de máquinas locales, requiere privilegios de administrador en su ventana CMD / PowerShell o en su propio script de implementación automatizado .:

certutil -addstore Root path\to\cafile.pem

Esto también se puede hacer desde la Consola de administración haciendo clic en muchas ventanas si prefiere la forma del mouse ( Cómo: Ver certificados con el complemento MMC ).


fuente
¿Sabe en qué almacén de certificados debe cargarse el certificado para que esto funcione?
ETL
@ETL He probado solo con la tienda de confianza del sistema de máquina local, lo cual es bueno ya que funciona con todas las cuentas de máquina. De acuerdo con la página wiki de Mozilla mencionada en otra respuesta, esperan completar el soporte completo de certificados (incluidos los certificados de AD) en Firefox 52. De manera predeterminada, certmgr.msc muestra el almacén de certificados del usuario, pero debe agregarlo al almacén de certificados de la máquina local. También puede usar Windows certutil (no confunda con el NSS certutil de Mozilla) para implementarlo.
Arg. Tengo el certificado en su lugar (los estoy agregando usando las Políticas de grupo a las Autoridades de certificación raíz de confianza de la máquina local). Encendí la opción Firefox pero el certificado todavía no se usa en FF 50.1. ¿Es ahí donde tienes tus certificados?
ETL
2
La lista de verificación es: 1: Firefox no enumera los certificados de Windows en Avanzado -> Certificados, pero de todos modos debería funcionar como confiable. 2: El certificado del servidor debe crearse con esa CA, utilizando una CA directamente ya que el certificado del servidor no funcionará. 3: El certificado del servidor debe generarse correctamente, heredando las políticas de CA para los nombres alternativos del sujeto. 4: en caso de que el certstore sea incorrecto, intente usar el certutil de Microsoft, hago esto: en una ventana cmd de Administrador: certutil -addstore Root path\to\cafile.pem(o .crt)
1
Esto también se menciona en Mozilla Wiki .
Franklin Yu
2

¿Ha considerado implementar esos certificados en Firefox y en la tienda de certificados de Windows?

https://wiki.mozilla.org/CA:AddRootToFirefox detalla algunas opciones:

  1. Modifique la base de datos de certificados directamente con certutil.
  2. Use la función de configuración automática de Firefox, colocando un archivo javascript junto al binario, para agregar los certificados:

    var certdb = Cc["@mozilla.org/security/x509certdb;1"].getService(Ci.nsIX509CertDB);
    var certdb2 = certdb;
    try {
        certdb2 = Cc["@mozilla.org/security/x509certdb;1"].getService(Ci.nsIX509CertDB2);
    } catch (e) {}
    cert = "MIIHPT...zTMVD"; // This should be the certificate content with no line breaks at all.
    certdb2.addCertFromBase64(cert, "C,C,C", "");
    
  3. Distribuya los archivos de la base de datos de certificados directamente.
  4. Empaquete Firefox para la instalación, incluidos los certificados en su distribución.
  5. Use CCK2 para crear una extensión que agregue los certificados.
wfaulk
fuente
1

No hay una buena manera de manejar el uso de la tienda del sistema, pero hay una buena solución (forzar el uso de una tienda compatible con Firefox personalizada).

El bit de script a continuación funciona bien al iniciar / cerrar sesión.

Stop-Process -processname firefox

$DBPath="\\yourserver\yourshare\cert8.db"
$FirefoxProfiles=Get-ChildItem $Env:appdata\Mozilla\Firefox\Profiles     
$DB=Get-Item $DBPath    
ForEach ( $Profile in $FirefoxProfiles )
{
    $FullPath=join-path $Env:appdata\Mozilla\Firefox\Profiles $Profile
    Copy-Item $DB $FullPath
    $FullPath
}
Tim Brigham
fuente
Incluso podría ampliar una idea como esta y obtener la lista actual de certificados de confianza de la tienda de Windows y generar el archivo cert8.db sobre la marcha utilizando el certificado Mozilla referenciado en la respuesta de wfaulk.
Ryan Bolger
1

Existe un proyecto gratuito que brinda la capacidad de administrar certificados raíz de Firefox utilizando políticas de grupo. Puede instalar o eliminar certificados raíz de la base de datos de Firefox.

Slipeer
fuente