Pregunta Cómo Chrome acepta el certificado de host local autofirmado


Creé un certificado SSL autofirmado para el CN ​​localhost. Firefox acepta este certificado después de quejarse inicialmente, como se esperaba. Chrome e IE, sin embargo, se niegan a aceptarlo, incluso después de agregar el certificado al almacén de certificados del sistema en Trusted Roots. Aunque el certificado aparece como correctamente instalado cuando hago clic en "Ver información del certificado" en la ventana emergente HTTPS de Chrome, aún insiste en que no se puede confiar en el certificado.

¿Qué se supone que debo hacer para que Chrome acepte el certificado y deje de quejarse?


795
2017-09-28 08:41


origen


Respuestas:


Esto funcionó para mí:

  1. Con Chrome, acceda a una página en su servidor a través de HTTPS y continúe pasando la página de advertencia roja (suponiendo que aún no lo haya hecho).
  2. Abrir Chrome Settings > Show advanced settings > HTTPS/SSL > Manage Certificates.
  3. Haga clic en el Authorities pestaña y desplácese hacia abajo para encontrar su certificado bajo el nombre de la organización que le dio al certificado.
  4. Selecciónelo, haga clic en Editar (NOTA: en las versiones recientes de Chrome, el botón ahora es "Avanzado" en lugar de "Editar"), marque todas las casillas y haga clic en Aceptar. Es posible que debas reiniciar Chrome.

Deberías obtener el bonito candado verde en tus páginas ahora.

EDITAR: Intenté esto nuevamente en una máquina nueva y el certificado no apareció en la ventana Administrar Certificados simplemente al continuar desde la página roja del certificado que no es de confianza. Tenía que hacer lo siguiente:

  1. En la página con el certificado no confiable (https:// está tachado en rojo), haga clic en el candado> Información del certificado. NOTA: en las versiones más nuevas de Chrome, debes abrir Developer Tools > Securityy seleccione View certificate.
  2. Haga clic en el Details tab > Export. Escoger PKCS #7, single certificate como el formato de archivo.
  3. Luego siga mis instrucciones originales para llegar a la página Administrar Certificados. Haga clic en el Authorities tab > Import y elija el archivo al que exportó el certificado, y asegúrese de elegir  PKCS #7, single certificate  como el tipo de archivo.
  4. Si se solicita una tienda de certificación, elija Autoridades de certificados de raíz de confianza
  5. Marque todos los cuadros y haga clic en Aceptar. Reinicia Chrome.

414
2018-02-25 21:14



NO PARA PROD

Simplemente pegue esto en su Chrome:

chrome://flags/#allow-insecure-localhost

Debería ver el texto resaltado que dice: Permitir certificados no válidos para recursos cargados desde localhost

Hacer clic Enable.


393
2017-08-09 01:52



En la Mac, puede usar la utilidad de Acceso a Llaveros para agregar el certificado autofirmado al llavero del Sistema, y ​​Chrome lo aceptará. Encontré las instrucciones paso a paso aquí:

Google Chrome, Mac OS X y certificados SSL autofirmados

Básicamente:

  1. haga doble clic en el icono del candado con una X y arrastre y suelte el icono del certificado en el escritorio,
  2. abra este archivo (terminando con una extensión .cer); esto abre la aplicación de llavero que le permite aprobar el certificado.

119
2017-10-31 15:56



ACTUALIZACIÓN PARA CHROME 58+ (LANZADO 2017-04-19)

A partir de Chrome 58, identificar el host utilizando solo commonName  está siendo eliminado. Ver más discusión aquí y rastreador de errores aquí. En el pasado, subjectAltName se usó solo para certificados de múltiples hosts, por lo que algunas herramientas internas de CA pueden no incluirlos.

Si sus certificados autofirmados funcionaron bien en el pasado pero de repente comenzó a generar errores en Chrome 58, esta es la razón.

Por lo tanto, cualquiera que sea el método que esté utilizando para generar su certificado autofirmado (o certificado firmado por una CA autofirmada), asegúrese de que el certificado del servidor contenga un certificado. subjectAltName con el apropiado DNS y / o IP entrada / entradas, incluso si es solo para un solo host.

Para openssl, esto significa que su configuración tendrá algo similar a lo siguiente para un solo host:

[v3_req]
subjectAltName = DNS:example.com

o para múltiples hosts:

[v3_req]
subjectAltName = DNS:example.com, DNS:host1.example.com, DNS:*.host2.example.com, IP:10.1.2.3

En el visor de certificados de Chrome (que se ha movido a la pestaña "Seguridad" en F12), debería verlo en la lista debajo de Extensions como Certificate Subject Alternative Name:

Chrome cert viewer


TRABAJO TEMPORAL

Es posible recurrir al viejo commonName comportamiento hasta Chrome 65, usando la siguiente configuración: EnableCommonNameFallbackForLocalAnchors

En Windows, esto se puede configurar en una sola PC usando el siguiente comando de registro (gracias @Meengla):

reg add HKLM\Software\Policies\Google\Chrome /v EnableCommonNameFallbackForLocalAnchors /t REG_DWORD /d 1

En Mac, se puede usar el siguiente comando (gracias @BugsBunny):

defaults write com.google.Chrome EnableCommonNameFallbackForLocalAnchors -bool true

En Linux, crea un archivo de política como /etc/opt/chrome/policies/managed/EnableCommonNameFallbackFor‌​LocalAnchors.json con los contenidos: { "EnableCommonNameFallbackForLocalAnchors": true } (gracias @seanf)

Se pueden encontrar más detalles sobre cómo configurar estas políticas para varias plataformas, incluida la configuración a través de GPO de Windows, en la parte superior de la página vinculada, así como la guía de la plantilla de la política de Chromium y el Guía de administradores.


De nuevo, estas soluciones son temporal hasta la versión 65!


98
2018-03-21 02:12



ACTUALIZACIÓN 11/2017: es probable que esta respuesta no funcione en la mayoría de las versiones más nuevas de Chrome.

ACTUALIZACIÓN 02/2016: Se pueden encontrar mejores instrucciones para usuarios de Mac aquí.

  1. En el sitio que desea agregar, haga clic con el botón derecho en el ícono de bloqueo rojo en la barra de direcciones:enter image description here

    1. Haga clic en la pestaña etiquetada Conexión, luego haz clic Información certificada

    2. Haga clic en el Detalles pestaña, haga clic en el botón Copiar a archivo .... Esto abrirá el Asistente de exportación de certificados, haga clic en Siguiente para llegar al Exportar formato de archivo pantalla.

    3. Escoger DER codificado binario X.509 (.CER), click Siguiente

    4. Hacer clic Vistazo... y guarda el archivo en tu computadora. Nombra algo descriptivo. Hacer clic Siguiente, luego haz clic Terminar.

    5. Abre la configuración de Chrome, desplázate hacia abajo y haz clic Mostrar configuración avanzada...

    6. Debajo HTTPS / SSL, click Administrar certificados ...

    7. Haga clic en el Autoridades de certificación de raíz de confianza pestaña, luego haga clic en Importar... botón. Esto abre el Asistente de importación de certificados. Hacer clic Siguiente para llegar al Archivo para Importar pantalla.

    8. Hacer clic Vistazo... y seleccione el archivo de certificado que guardó anteriormente, luego haga clic Siguiente.

    9. Seleccionar Coloque todos los certificados en la siguiente tienda. La tienda seleccionada debe ser Autoridades de certificación de raíz de confianza. Si no es así, haga clic Vistazo...y seleccionarlo. Hacer clic Siguiente y Terminar

    10. Hacer clic  en la advertencia de seguridad.

    11. Reinicia Chrome.


86
2017-09-03 22:56



Linux

Si está utilizando Linux, también puede seguir estas páginas oficiales de la wiki:

Básicamente:

  • haga clic en el ícono de candado con una X,
  • elegir información del certificado
  • ve a la pestaña Detalles
  • Haga clic en Exportar ... (guardar como archivo)

Ahora, el siguiente comando agregará el certificado (donde YOUR_FILE es su archivo exportado):

certutil -d sql:$HOME/.pki/nssdb -A -t "P,," -n YOUR_FILE -i YOUR_FILE

Para enumerar todos sus certificados, ejecute el siguiente comando:

certutil -d sql:$HOME/.pki/nssdb -L

Si todavía no funciona, podría verse afectado por este error: Problema 55050: Error SSL de Ubuntu 8179

PD Por favor, también asegúrese de tener libnss3-tools, antes de que puedas usar los comandos anteriores.

Si no tiene, instálelo de la siguiente manera:

sudo apt-get install libnss3-tools # on Ubuntu
sudo yum install nss-tools # on Fedora, Red Hat, etc.

Como beneficio adicional, puede usar los siguientes scripts prácticos:

$ cat add_cert.sh
certutil -d sql:$HOME/.pki/nssdb -A -t "P,," -n $1 -i $1
$ cat list_cert.sh
certutil -d sql:$HOME/.pki/nssdb -L # add '-h all' to see all built-in certs
$ cat download_cert.sh
echo QUIT | openssl s_client -connect $1:443 | sed -ne '/BEGIN CERT/,/END CERT/p'

Uso:

add_cert.sh [FILE]
list_cert.sh
download_cert.sh [DOMAIN]

Solución de problemas

  • Ejecuta Chrome con --auto-ssl-client-auth parámetro

    google-chrome --auto-ssl-client-auth


82
2017-09-18 14:11



Haga clic en cualquier lugar de la página y escriba un BYPASS_SEQUENCE

"thisisunsafe"es un BYPASS_SEQUENCE para Chrome versión 65

"badidea"Chrome versión 62 - 64.

"danger"solía funcionar en versiones anteriores de Chrome

No necesita buscar el campo de entrada, solo escríbalo. Se siente extraño pero está funcionando.

Lo probé en Mac High Sierra.

Para volver a verificar si lo cambiaron de nuevo, vaya a Último cromo Código fuente 

Para buscar BYPASS_SEQUENCE, en este momento se ve así:

var BYPASS_SEQUENCE = window.atob('dGhpc2lzdW5zYWZl');

Ahora lo tienen camuflado, pero para ver el BYPASS_SEQUENCE real puedes ejecutar la siguiente línea en una consola del navegador.

console.log(window.atob('dGhpc2lzdW5zYWZl'));

65
2017-12-05 05:08



Si eres en un mac y no ver la pestaña de exportación o cómo obtener el certificado que funcionó para mí:

  1. Haga clic en el candado antes de https: //
  2. Ve a la pestaña "Conexión"
  3. Haga clic en "Información del certificado"

    Ahora deberías ver esto: Different information of course and yours should be marked as trusted yet (otherwise      you probably wouldn't be here)

  4. Arrastre ese pequeño icono de certificado en su escritorio (o en cualquier lugar).

  5. Haga doble clic en el archivo .cer que se descargó, esto debería importarlo a su llavero y abrir Acceso de llavero a su lista de certificados.

    En algunos casos, esto es suficiente y ahora puede actualizar la página.

    De otra manera:

  6. Haga doble clic en el certificado recién agregado.
  7. En el menú desplegable de confianza, cambie la opción "Al usar este certificado" a "Confiar siempre".

¡Ahora vuelve a cargar la página en cuestión y debería resolverse el problema! Espero que esto ayude.


Editar desde Wolph

Para hacer esto un poco más fácil, puede usar la siguiente secuencia de comandos (fuente)

  1. Guarde lo siguiente guión como whitelist_ssl_certificate.ssh:

    #!/usr/bin/env bash -e
    
    SERVERNAME=$(echo "$1" | sed -E -e 's/https?:\/\///' -e 's/\/.*//')
    echo "$SERVERNAME"
    
    if [[ "$SERVERNAME" =~ .*\..* ]]; then
        echo "Adding certificate for $SERVERNAME"
        echo -n | openssl s_client -connect $SERVERNAME:443 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' | tee /tmp/$SERVERNAME.cert
        sudo security add-trusted-cert -d -r trustRoot -k "/Library/Keychains/System.keychain" /tmp/$SERVERNAME.cert
    else
        echo "Usage: $0 www.site.name"
        echo "http:// and such will be stripped automatically"
    fi
    
  2. Haga que el script sea ejecutable (desde el shell):

    chmod +x whitelist_ssl_certificate.ssh
    
  3. Ejecute la secuencia de comandos para el dominio que desea (simplemente copiar / pegar la url completa funciona):

    ./whitelist_ssl_certificate.ssh https://your_website/whatever
    

55
2018-01-14 04:53