Hacer que Chrome acepte el certificado de host local autofirmado

1213

He creado 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 instalado correctamente cuando hago clic en "Ver información del certificado" en la ventana emergente HTTPS de Chrome, todavía 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?

pjohansson
fuente
14
Cuando dice que Firefox se queja inicialmente, ¿quiere decir que le pide que agregue una excepción de certificado? Esto no debería suceder si el certificado está instalado correctamente. Me parece que los tres navegadores se quejan, pero Firefox le permite cancelar su queja. Estoy publicando esto como un comentario ya que no tengo una respuesta específica, pero he hecho exactamente esto y funciona bien en los tres navegadores. Te sugiero que primero intentes que funcione en IE, y luego, una vez que estés contento, preocúpate por los otros dos. Lo siento, no podría ser de más ayuda!
starskythehutch
1
Debe crear un certificado bien formado, incluida la forma en que se presentan los nombres DNS. OpenSSL no los presenta de una manera que satisfaga a los navegadores listos para usar. Consulte ¿Cómo crear un certificado autofirmado con openssl? .
jww
44
Firefox no usa el almacén de certificados del sistema.
curioso
44
Si la firma de su certificado utiliza SHA-1, las versiones recientes de Chrome (circa 57) mostrarán advertencias incluso si ha podido agregar su certificado personalizado con éxito . En cualquier caso, el panel "Seguridad" de las herramientas de desarrollo dirá más específicamente cuál es el problema, por ejemplo: net::ERR_CERT_WEAK_SIGNATURE_ALGORITHM.
SeldomNeedy
2
Acabo de dejar de usar Chrome para fines de desarrollo, ya que no es amigable para los desarrolladores. Por lo general, una persona que termina en esta situación sabe lo que está haciendo de todos modos. Gracias pero no gracias. ¡Ya tuve suficiente frustración con Chrome!
GTodorov

Respuestas:

66

2020-05-22 : con solo 6 comandos de shell , puede lograr esto.

Por favor, no cambie la configuración de seguridad del navegador.

Con el siguiente código, puede (1) convertirse en su propia CA, (2) y luego firmar su certificado SSL como CA. (3) Luego importe el certificado de CA (no el certificado SSL, que va a su servidor) en Chrome / Chromium. (Sí, esto funciona incluso en Linux).

######################
# Become a Certificate Authority
######################

# Generate private key
openssl genrsa -des3 -out myCA.key 2048
# Generate root certificate
openssl req -x509 -new -nodes -key myCA.key -sha256 -days 825 -out myCA.pem

######################
# Create CA-signed certs
######################

NAME=mydomain.com # Use your own domain name
# Generate a private key
openssl genrsa -out $NAME.key 2048
# Create a certificate-signing request
openssl req -new -key $NAME.key -out $NAME.csr
# Create a config file for the extensions
>$NAME.ext cat <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = $NAME # Be sure to include the domain name here because Common Name is not so commonly honoured by itself
DNS.2 = bar.$NAME # Optionally, add additional domains (I've added a subdomain here)
IP.1 = 192.168.0.13 # Optionally, add an IP address (if the connection which you have planned requires it)
EOF
# Create the signed certificate
openssl x509 -req -in $NAME.csr -CA myCA.pem -CAkey myCA.key -CAcreateserial \
-out $NAME.crt -days 825 -sha256 -extfile $NAME.ext

Recordar:

  1. Conviértete en CA
  2. Firme su certificado con su clave CA
  3. Importar myCA.pem como una autoridad en la configuración de Chrome (Configuración> Administrar certificados> Autoridades> Importar)
  4. Utilizar el .crt archivo en tu servidor

Pasos adicionales (para Mac, al menos):

  1. Importe el certificado de CA en "Archivo> Importar archivo", luego también encuéntrelo en la lista, haga clic con el botón derecho, expanda "> Confiar" y seleccione "Siempre"
  2. Agregue a extendedKeyUsage=serverAuth,clientAuthcontinuación basicConstraints=CA:FALSEy asegúrese de establecer "CommonName" igual que $NAMEcuando solicita la configuración

Puedes revisar tu trabajo

openssl verify -CAfile myCA.pem -verify_hostname bar.mydomain.com mydomain.com.crt
JellicleCat
fuente
2
Los navegadores y sistemas operativos @maverick se envían con un número limitado de CA en los que confían. Aunque cualquiera puede convertirse en una CA, para lograr que cualquiera confíe en sus certificados, necesitaría que las personas los agreguen manualmente como una CA confiable (como le decimos a Chrome que haga cuando importamos manualmente un certificado).
JellicleCat
2
¡Excelente! Dos comentarios para usuarios de Mac como yo: en la última línea, use en -days 825lugar de -days 1825debido a superuser.com/questions/1492643/… , y vale la pena señalar que para importar el certificado raíz en Key Chain Access, no solo necesita "Archivo > Importar archivo ", pero también para encontrarlo en la lista, haga clic derecho sobre él, expanda"> Confiar "y seleccione" Siempre ".
michielbdejong
2
si necesita un archivo PEM en lugar de un archivo CRT para su servidor de desarrollo local, no se preocupe, simplemente combine los archivos .crt y .csr y guárdelos como un archivo .pem , y estará listo.
Kerem Baydogan el
1
¡AL FIN FUNCIONA! BRAVO por esta respuesta. No olvide cargar myCA.pem en su Chrome o Firefox (Configuración> Administrar certificados> Autoridades> Importar)
Fryser wow
3
Cambié DNS.1 a IP.1 para mi servidor LAN basado en IP. Funciona. Gracias.
dw1
767

Por localhostsolo:

Simplemente pegue esto en su Chrome:

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

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

Haga clic Enable.

Chris
fuente
3
Deshabilita la advertencia ... ¡pero también el caché! bugs.chromium.org/p/chromium/issues/detail?id=103875
Hugo Wood
44
esto no funcionará si está usando Chrome en modo de incógnito (para cambiar identidades, por ejemplo) pero muy limpio de lo contrario
baywet
55
Esto: si puedes soportar el molesto mensaje rojo No seguro. De lo contrario, son horas de encantamientos misteriosos de OpenSL y luego tratar de lidiar con el administrador interno de certificados en Chrome.
timbo
10
No sé por qué se votó esta respuesta, pero hay una diferencia entre el certificado no válido y el certificado autofirmado. La pregunta es sobre el certificado autofirmado.
Mehdi
2
No funcionó para mí en absoluto. Lo que funcionó para mí fue generar un certificado autofirmado que incluye subjectAltName, como se explica en esta respuesta: stackoverflow.com/a/42917227/2873507
Vic Seedoubleyew
507

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 no lo haya hecho ya).
  2. Abrir Chrome Settings > Show advanced settings > HTTPS/SSL > Manage Certificates.
  3. Haga clic en la Authoritiespestaña y desplácese hacia abajo para encontrar su certificado debajo del Nombre de la organización que le dio al certificado.
  4. Selecciónelo, haga clic en Editar ( NOTA : en 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 deba reiniciar Chrome.

Debería obtener el bonito candado verde en sus páginas ahora.

EDITAR: Intenté esto nuevamente en una nueva máquina y el certificado no apareció en la ventana Administrar certificados simplemente al continuar desde la página roja del certificado no confiable. Tuve 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, debe abrir Developer Tools > Securityy seleccionar View certificate.
  2. Haz clic en el Details tab > Export. Elija PKCS #7, single certificatecomo formato de archivo.
  3. Luego, siga mis instrucciones originales para llegar a la página Administrar certificados. Haga clic en Authorities tab > Importy elija el archivo al que exportó el certificado, y asegúrese de elegir PKCS #7, single certificate el tipo de archivo .
  4. Si se le solicita la tienda de certificación, elija Autoridades de certificados raíz de confianza
  5. Marque todas las casillas y haga clic en Aceptar. Reinicia Chrome.
Kellen
fuente
143
Intenté esto en una máquina Linux, pero decía que la importación falló porque xxx.xxx.com: no es una autoridad de certificación.
mate
15
Gracias @kellen ... sin embargo, al usar la versión 29.0.1547.57 beta de Chrome, no parece haber una opción de "Exportar" en ninguna parte de la Información del certificado. Dicho esto, hay una sección "Detalles" pero no tiene la forma de una pestaña. Aparece como un bloque plegable / expandible. i.imgur.com/dDmNEIh.png
cabalgata el
20
En Chrome 37, ya no hay un Exportbotón descriptivo útil, parece haber sido reemplazado por el maravilloso Copy to filebotón. Por qué no se guardó 'exportar', la mente solo se
aturde
13
@Jakobud, simplemente arrastre el símbolo del certificado al escritorio o algo y se exportará. Sin embargo, el resto de la respuesta no funciona en OS X (Yosemite) por lo que puedo decir (Chrome 39).
Db
33
A partir de Chrome 56, para acceder a la configuración del certificado SSL en Windows, debe usar las Herramientas para desarrolladores (CTRL + MAYÚS + i), vaya a la pestaña "Seguridad" y haga clic en el botón "Ver certificado".
void.pointer
167

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

A partir de Chrome 58, commonName se eliminó la capacidad de identificar el host utilizando únicamente . Los certificados ahora deben usarse subjectAltNamepara identificar sus hosts. Vea más discusión aquí y rastreador de errores aquí . En el pasado, subjectAltNamese usaba solo para certificados de host múltiple, por lo que algunas herramientas de CA internas no los incluyen.

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

Por lo tanto, sea cual 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 subjectAltNamecon la entrada DNSy / o IPentrada correcta , incluso si es solo para un único host .

Para openssl, esto significa que su configuración OpenSSL ( /etc/ssl/openssl.cnfen Ubuntu) debe tener algo similar a lo siguiente para un solo host:

[v3_ca]   # and/or [v3_req], if you are generating a CSR
subjectAltName = DNS:example.com

o para múltiples hosts:

[v3_ca]   # and/or [v3_req], if you are generating a CSR
subjectAltName = DNS:example.com, DNS:host1.example.com, DNS:*.host2.example.com, IP:10.1.2.3

En espectador cert de Chrome (que ha trasladado a la pestaña "Seguridad" bajo F12) debería ver que aparece bajo Extensionscomo Certificate Subject Alternative Name:

Chrome cert viewer

Tobias J
fuente
12
¡Gracias por publicar sobre la actualización de Chrome 58+! Para las personas que buscan crear un certificado autofirmado que incluya una SAN en Windows, una manera fácil es usar el comando New-SelfSignedCertificate PowerShell. New-SelfSignedCertificate -DnsName localhost -CertStoreLocation cert:\LocalMachine\My
DanO
3
@DANO GRACIAS! Ninguna de las otras soluciones me funcionó en Win10. ¡Es bueno saber que al menos Powershell genera certificados válidos!
Brian Donahue
1
¡Encontré una solución en Reddit para Chrome 58+ y funciona! En el símbolo del sistema de administración: reg agregue HKLM \ Software \ Policies \ Google \ Chrome / v EnableCommonNameFallbackForLocalAnchors / t REG_DWORD / d 1
IrfanClemson
3
Para crear la política en Linux, debe crear un archivo de política, digamos /etc/opt/chrome/policies/managed/EnableCommonNameFallbackForLocalAnchors.jsoncon estos contenidos: { "EnableCommonNameFallbackForLocalAnchors": true }
seanf
55
"En el visor de certificados de Chrome (que se ha movido a la pestaña" Seguridad "en F12) debería verlo en la lista Extensionscomo Certificate Subject Alternative Name". No veo ninguna sección de "Extensiones" cuando abro la pestaña Seguridad en las herramientas de desarrollo F12 (Chrome 62). ¿Se ha trasladado a otro lugar?
Thunderforge el
143

En Mac, puede usar la utilidad Acceso a llavero 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 de candado con una X y arrastre y suelte el icono del certificado en el escritorio,
  2. abra este archivo (que termina con una extensión .cer); esto abre la aplicación de llavero que le permite aprobar el certificado.
bjnord
fuente
12
Es importante destacar que es posible que deba reiniciar Chrome para que esto surta efecto.
Xiong Chiamiov
10
Tuve que editar las preferencias de certificado y permitirme confiar en SSL manualmente
NeDark
1
Esto funcionó para mí en Yosemite, 10.10.5, Chrome Versión 46.0.2490.80 (64 bits). ¡Gracias!
romellem
2
Trabajó en El Capitán, no se requiere reiniciar. Agregué el certificado, hice clic en él, expandí el menú desplegable Confianza y lo configuré Always Trustpara la sección SSL. Básicamente lo que dijo @NeDark.
Tom
1
Necesitaba arrastrar y soltar el certificado desde el escritorio en Keychain y luego hacer la aprobación.
jmq
130

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, simplemente escríbalo. Se siente extraño pero está funcionando.

Lo probé en Mac High Sierra.

Para verificar si lo cambiaron nuevamente, vaya al Último código fuente de cromo

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 puede ejecutar la siguiente línea en una consola del navegador.

console.log(window.atob('dGhpc2lzdW5zYWZl'));
Yevgeniy Afanasyev
fuente
66
wtf, gracias, esto funcionó para mí ubuntu 16.04 63.0.3239.84
gries
8
Este código ha cambiado desde la nueva versión. Nueva frase esthisisunsafe
The Java Guy
66
En Chrome 65 en Windows 10, escribir thisisunsafesolo parece tener el efecto de agregar este sitio a las excepciones. (La barra de direcciones todavía dice "No seguro" en rojo.)
Ryan
2
esto funciona, pero solo para la primera carga, si navega por la página debe escribir nuevamente bupass_squence
talsibony
"thisisunsafe" BYPASS_SEQUENCE fue lo único de esta página que me funcionó en Mac Chrome 72. ¡Siento que no necesité molestarme en crear mi certificado autofirmado ...!
Jono
95

Linux

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

Básicamente:

  • haz clic en el ícono de candado con una X,
  • elija Información del certificado
  • ir 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 aún no funciona, podría verse afectado por este error: Problema 55050: error SSL de Ubuntu 8179

PD: también asegúrate de que tienes libnss3-tools antes de poder utilizar 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 útiles:

$ 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-authparámetro

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

kenorb
fuente
Excelente, me encantan tus guiones. Sin embargo, no necesita QUIT (de todos modos no existe un comando HTTP como QUIT), y tampoco necesita el sed, las herramientas nss pueden filtrar el certificado entre BEGIN y END CERT. Así que download_cert.shpuede ser simplemente esto:echo | openssl s_client -connect $1:443
Paul Tobias
He probado las otras opciones, pero solo esta funciona actualmente en Chrome 4x para Linux, se negó a importar a cualquier tienda utilizando herramientas integradas.
Kendrick
93

En Mac, puede crear un certificado en el que Chrome y Safari confíen plenamente a nivel de sistema haciendo lo siguiente:

    # create a root authority cert
    ./create_root_cert_and_key.sh

    # create a wildcard cert for mysite.com
    ./create_certificate_for_domain.sh mysite.com

    # or create a cert for www.mysite.com, no wildcards
    ./create_certificate_for_domain.sh www.mysite.com www.mysite.com

Lo anterior utiliza los siguientes scripts y un archivo de soporte v3.extpara evitar errores de nombre alternativo del sujeto

Si desea crear un nuevo certificado autofirmado de plena confianza utilizando su propia autoridad raíz, puede hacerlo utilizando estos scripts.

create_root_cert_and_key.sh

    #!/usr/bin/env bash
    openssl genrsa -out rootCA.key 2048
    openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 1024 -out rootCA.pem

create_certificate_for_domain.sh

    #!/usr/bin/env bash

    if [ -z "$1" ]
    then
      echo "Please supply a subdomain to create a certificate for";
      echo "e.g. www.mysite.com"
      exit;
    fi

    if [ ! -f rootCA.pem ]; then
      echo 'Please run "create_root_cert_and_key.sh" first, and try again!'
      exit;
    fi
    if [ ! -f v3.ext ]; then
      echo 'Please download the "v3.ext" file and try again!'
      exit;
    fi

    # Create a new private key if one doesnt exist, or use the xeisting one if it does
    if [ -f device.key ]; then
      KEY_OPT="-key"
    else
      KEY_OPT="-keyout"
    fi

    DOMAIN=$1
    COMMON_NAME=${2:-*.$1}
    SUBJECT="/C=CA/ST=None/L=NB/O=None/CN=$COMMON_NAME"
    NUM_OF_DAYS=825
    openssl req -new -newkey rsa:2048 -sha256 -nodes $KEY_OPT device.key -subj "$SUBJECT" -out device.csr
    cat v3.ext | sed s/%%DOMAIN%%/"$COMMON_NAME"/g > /tmp/__v3.ext
    openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days $NUM_OF_DAYS -sha256 -extfile /tmp/__v3.ext 

    # move output files to final filenames
    mv device.csr "$DOMAIN.csr"
    cp device.crt "$DOMAIN.crt"

    # remove temp file
    rm -f device.crt;

    echo 
    echo "###########################################################################"
    echo Done! 
    echo "###########################################################################"
    echo "To use these files on your server, simply copy both $DOMAIN.csr and"
    echo "device.key to your webserver, and use like so (if Apache, for example)"
    echo 
    echo "    SSLCertificateFile    /path_to_your_files/$DOMAIN.crt"
    echo "    SSLCertificateKeyFile /path_to_your_files/device.key"

v3.ext

    authorityKeyIdentifier=keyid,issuer
    basicConstraints=CA:FALSE
    keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
    subjectAltName = @alt_names

    [alt_names]
    DNS.1 = %%DOMAIN%%

Un paso más: cómo hacer que los certificados autofirmados sean totalmente confiables en Chrome / Safari

Para permitir que los certificados autofirmados sean TOTALMENTE confiables en Chrome y Safari, debe importar una nueva autoridad de certificación en su Mac. Para hacerlo, siga estas instrucciones o las instrucciones más detalladas sobre este proceso general en el sitio web de mitmproxy :

Puede hacer esto de 2 maneras, en la línea de comando, usando este comando que le pedirá su contraseña:

$ sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain rootCA.pem

o usando la Keychain Accessaplicación:

  1. Acceso a llavero abierto
  2. Elija "Sistema" en la lista "Llaveros"
  3. Elija "Certificados" en la lista "Categoría"
  4. Elija "Archivo | Importar elementos ..."
  5. Busque el archivo creado anteriormente, "rootCA.pem", selecciónelo y haga clic en "Abrir"
  6. Seleccione su certificado recién importado en la lista "Certificados".
  7. Haga clic en el botón "i" o haga clic con el botón derecho en su certificado y elija "Obtener información"
  8. Expanda la opción "Confianza"
  9. Cambie "Al usar este certificado" a "Confiar siempre"
  10. Cierre el cuadro de diálogo y se le pedirá su contraseña.
  11. ¡Cierre y vuelva a abrir las pestañas que usan su dominio de destino, y se cargará de forma segura!

y como beneficio adicional, si necesita que los clientes de Java confíen en los certificados, puede hacerlo importando sus certificados al almacén de claves de Java. Tenga en cuenta que esto eliminará el certificado del almacén de claves si ya existe, ya que necesita actualizarlo en caso de que las cosas cambien. Por supuesto, solo hace esto para los certificados que se importan.

import_certs_in_current_folder_into_java_keystore.sh

KEYSTORE="$(/usr/libexec/java_home)/jre/lib/security/cacerts";

function running_as_root()
{
  if [ "$EUID" -ne 0 ]
    then echo "NO"
    exit
  fi

  echo "YES"
}

function import_certs_to_java_keystore
{
  for crt in *.crt; do 
    echo prepping $crt 
    keytool -delete -storepass changeit -alias alias__${crt} -keystore $KEYSTORE;
    keytool -import -file $crt -storepass changeit -noprompt --alias alias__${crt} -keystore $KEYSTORE
    echo 
  done
}

if [ "$(running_as_root)" == "YES" ]
then
  import_certs_to_java_keystore
else
  echo "This script needs to be run as root!"
fi
Brad Parks
fuente
Obtuve "Error al abrir la clave privada rootCA.key" al ejecutar $ ./create_root_cert_and_key.sh. macOS 10.12.4 y OpenSSL 0.9.8zh 14 de enero de 2016.
donut
1
Ejecutar $ openssl genrsa -out rootCA.key 2048antes $ ./create_root_cert_and_key.shcorrige el error "Error al abrir la clave privada rootCA.key" que encontré.
donut
@donut - gracias por señalar esto - tuve esa línea duplicada, así que estoy seguro de que causó el problema que viste ...
Brad Parks,
openssl req -new -newkey rsa:2048 -sha256 -nodes -key device.key -subj "$SUBJECT" -out device.csrme está dando el error "Error al abrir PRivate Key device.key" Pensé que se suponía que este comando debía crear device.key, pero parece estar intentando leerlo por alguna razón
Lenny
2
-key-keyoutopenssl req -new -newkey rsa:2048 -sha256 -nodes -keyout device.key -subj "$SUBJECT" -out device.csr
Lenny
90

ACTUALIZACIÓN 11/2017: esta respuesta probablemente no funcionará para la mayoría de las versiones más nuevas de Chrome.

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

  1. En el sitio que desea agregar, haga clic con el botón derecho en el icono de candado rojo en la barra de direcciones:ingrese la descripción de la imagen aquí

    1. Haga clic en la pestaña etiquetada Conexión , luego haga clic en Información del certificado

    2. Haga clic en el Detalles ficha, haga clic en el botón Copiar en archivo ... . Esto abrirá el Asistente de exportación de certificados, haga clic en Siguiente para acceder a la pantalla Formato de archivo de exportación .

    3. Elija DER binario codificado X.509 (.CER) , haga clic en Siguiente

    4. Haga clic en Examinar ... y guarde el archivo en su computadora. Nómbrelo algo descriptivo. Haga clic en Siguiente , luego haga clic en Finalizar .

    5. Abra la configuración de Chrome, desplácese hasta la parte inferior y haga clic en Mostrar configuración avanzada ...

    6. En HTTPS / SSL , haga clic en Administrar certificados ...

    7. Haga clic en la certificación raíz de confianza Autoridades ficha, a continuación, haga clic en la importación ... botón. Esto abre el Asistente de importación de certificados. Haga clic en Siguiente para acceder a la pantalla Archivo para importar .

    8. Haga clic en Examinar ... y seleccione el archivo de certificado que guardó anteriormente, luego haga clic en Siguiente .

    9. Seleccione Colocar todos los certificados en la siguiente tienda . La tienda seleccionada debe ser Autoridades de certificación raíz de confianza . Si no es así, haga clic en Examinar ... y selecciónelo. Haga clic en Siguiente y Finalizar

    10. Haga clic en en la advertencia de seguridad.

    11. Reinicia Chrome.

kmgdev
fuente
2
@AJeneral Sí, Chrome cambió de nuevo. Las instrucciones en este artículo me funcionaron recientemente.
kmgdev
2
Esta opción no existe en Mac Chrome a partir de la fecha de este comentario.
y3sh
1
@kgrote, Chrome no tiene su propio almacén de certificados. Todo lo que está haciendo es agregar y eliminar el de Windows. Como tal, una mejor manera es simplemente usar certmgr.mscpara agregar y eliminar certificados.
Pacerier
1
Trabajó para mí, gracias. Tuve que reiniciar Chrome y, lo más importante, mi certificado tenía que expirar antes de 2017. Material SHA-1.
ioanb7
1
¡EL CROMO CAMBIÓ DE NUEVO! Ahora, el paso "En la barra de direcciones, haga clic en el pequeño candado con la X. Aparecerá una pequeña pantalla de información". no funciona
Bruno Bronosky
59

Si estás en una Mac y no ves la pestaña de exportación o cómo obtener el certificado, esto funcionó para mí:

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

    Ahora deberías ver esto: La información diferente, por supuesto, y la suya debe marcarse como confiable todavía (de lo contrario, probablemente no estaría aquí)

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

  5. Haga doble clic en el archivo .cer que descargó, esto debería importarlo a su llavero y abrir Acceso a 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 vuelva 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 el siguiente script ( fuente ):

  1. Guarde el siguiente script 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 el script para el dominio que desee (simplemente copie / pegue la url completa funciona):

    ./whitelist_ssl_certificate.ssh https://your_website/whatever
LunaCodeGirl
fuente
1
Este enfoque funcionó para mí en OS X Mavericks, no había una opción de exportación disponible como se describe en la respuesta superior anterior.
Kevin Leary
Funciona genial. El bloqueo antes de https todavía está tachado, pero está bien porque ya no hay ventanas emergentes molestas.
nalply
Esto funcionó para mí en Mac Catalina. ¡Gracias! :)
Saurabh
58

ACTUALIZADO 23/04/2020

Recomendado por el equipo de cromo

https://www.chromium.org/Home/chromium-security/deprecating-powerful-features-on-insecure-origins#TOC-Testing-Powerful-Features

Solución rápida súper fácil

Hay una frase de omisión secreta que se puede escribir en la página de error para que Chrome continúe a pesar del error de seguridad: esto no es seguro (en versiones anteriores de Chrome, escriba badidea e incluso antes, peligro ). ¡ NO LO USE A MENOS QUE USTED ENTIENDA EXACTAMENTE POR QUÉ LO NECESITA!

Fuente:

https://chromium.googlesource.com/chromium/src/+/d8fc089b62cd4f8d907acff6fb3f5ff58f168697%5E%21/

(NOTA que window.atob('dGhpc2lzdW5zYWZl')resuelve athisisunsafe )

La última versión de la fuente es @ https://chromium.googlesource.com/chromium/src/+/refs/heads/master/components/security_interstitials/core/browser/resources/interstitial_large.js y elwindow.atob función se puede ejecutar en Una consola JS.

Para obtener información sobre por qué el equipo de Chrome cambió la frase de omisión (la primera vez):

https://bugs.chromium.org/p/chromium/issues/detail?id=581189

Si todo lo demás falla (Solución # 1)

Para las excepciones únicas si la opción "Proceder de todos modos" no está disponible, o si la frase de omisión funciona, este truco funciona bien:

  1. Permita los errores del certificado localhostactivando este indicador (tenga en cuenta que Chrome necesita reiniciarse después de cambiar el valor del indicador):

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

    (y la respuesta de voto https://stackoverflow.com/a/31900210/430128 por @Chris)

  2. Si el sitio al que desea conectarse es localhost, ya está. De lo contrario, configure un túnel TCP para escuchar localmente en el puerto 8090 y conéctese al broken-remote-site.compuerto 443, asegúrese de haber socatinstalado y ejecutado algo como esto en una ventana de terminal:

    socat tcp-listen:8090,reuseaddr,fork tcp:broken-remote-site.com:443

  3. Vaya a https: // localhost: 8090 en su navegador.

Si todo lo demás falla (Solución # 2)

Similar a "Si todo lo demás falla (Solución # 1)", aquí configuramos un proxy para nuestro servicio local usando ngrok . Debido a que puede acceder a los túneles http ngrok a través de TLS (en cuyo caso ngrok lo termina con un certificado válido) o a través de un punto final que no sea TLS, el navegador no se quejará de certificados no válidos.

Descargue e instale ngrok y luego exponga a través de ngrok.io:

ngrok http https://localhost

ngrok se iniciará y le proporcionará un nombre de host al que puede conectarse, y todas las solicitudes se enviarán de nuevo a su máquina local.

Raman
fuente
10
Como se indica en quora.com/… , otra opción es hacer clic en cualquier lugar de la página y escribir "badidea"
smihael
Cualquiera que intente usar localhost con https para trabajadores de servicio, el primer punto de If-all-fail funcionó para mí en Chrome 60 ubuntu 14.04
formatkaka
esto seguirá tratando el certificado como no válido y hará que la contraseña se administre y se niegue a trabajar
Ray Foss
34

Para un entorno de prueba

Puede usarlo --ignore-certificate-errorscomo parámetro de línea de comando al iniciar Chrome (trabajando en la versión 28.0.1500.52 en Ubuntu).

Esto hará que ignore los errores y se conecte sin previo aviso. Si ya tiene una versión de Chrome en ejecución, deberá cerrarla antes de reiniciarla desde la línea de comandos o abrirá una nueva ventana pero ignorará los parámetros.

Configuro Intellij para que inicie Chrome de esta manera al realizar la depuración, ya que los servidores de prueba nunca tienen certificados válidos.

Sin embargo, no recomendaría una navegación normal como esta, ya que las comprobaciones de certificados son una característica de seguridad importante, pero esto puede ser útil para algunos.

Kieran Moore
fuente
55
¡Funcionó para mí en Windows 8! Acabo de hacer clic derecho en el acceso directo de Chrome> Propiedades> Cambié el campo 'Destino' de esta manera (tenga en cuenta que '--no hacer caso a los errores de certificado' debe agregarse después de la cita, y con espacio): "C: \ Archivos de programa (x86) \ Google \ Chrome \ Application \ chrome.exe "--ignore-certificate-errors
mikhail-t
1
Esto no responde a la pregunta, y es peligroso. La pregunta era cómo lograr que Chrome confíe en un certificado de servidor autofirmado; no cómo ignorar advertencias y errores.
jww
1
Esta es la única solución que funcionó para mí en Chrome (63.0.3239.108) con Windows 7 (64 bits). Con respecto a la seguridad, creé un ícono especial en el escritorio que solo inicio cuando desarrollo en una máquina virtual local. Importar certificados locales autofirmados, sintonizar chrome: // flags & HSTS domain no ayudó. Chrome definitivamente debería mantener ese viejo botón bueno "Agregar excepción de seguridad": me ahorraría 2 horas de problemas con configuraciones inútiles.
lubosdz
¡Este tutorial funcionó de maravilla! youtube.com/watch?v=qoS4bLmstlk
Jonathan Martins
20

Como alguien ha notado, debe reiniciar TODO Chrome, no solo las ventanas del navegador. La forma más rápida de hacerlo es abrir una pestaña para ...

chrome://restart

DejerNet
fuente
¡Oye! Solo quería señalar que esto es lo que me solucionó. Estaba agregando una CA personalizada a la tienda de confianza, siempre me había funcionado de esa manera. Probé Firefox y trabajé sin problemas pero no con Chrome. Al final fue porque parece que necesitas reiniciar completamente Chrome como mencionas. Es posible que Chrome siga usando el mismo almacén de confianza mientras esos procesos en segundo plano aún se estén ejecutando.
Jose Cifuentes
20

WINDOWS JUN / 2017 Windows Server 2012

Seguí la respuesta de @Brad Parks. En Windows, debe importar rootCA.pem en la tienda Trusted Root Certificates Authorities.

Hice los siguientes pasos:

openssl genrsa -out rootCA.key 4096
openssl req -x509 -new -nodes -key rootCA.key -newkey rsa:4096 -sha256 -days 1024 -out rootCA.pem
openssl req -new -newkey rsa:4096 -sha256 -nodes -keyout device.key -out device.csr
openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 2000 -sha256 -extfile v3.ext

Donde v3.ext es:

authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names

[alt_names]
DNS.1 = localhost
IP.1 = 192.168.0.2
IP.2 = 127.0.0.1

Luego, en mi caso, tengo una aplicación web autohospedada, así que necesito vincular el certificado con la dirección IP y el puerto, el certificado debe estar en MI tienda con información de clave privada, así que exporté a formato pfx.

openssl pkcs12 -export -out device.pfx -inkey device.key -in device.crt

Con la consola mmc (Archivo / Agregar o quitar complementos / Certificados / Agregar / Computert Account / LocalComputer / OK) importé el archivo pfx en la tienda Personal.

Más tarde usé este comando para vincular el certificado (también podría usar la herramienta HttpConfig):

netsh http add sslcert ipport=0.0.0.0:12345 certhash=b02de34cfe609bf14efd5c2b9be72a6cb6d6fe54 appid={BAD76723-BF4D-497F-A8FE-F0E28D3052F4}

certhash = Certificado Thumprint

appid = GUID (su elección)

Primero intenté importar el certificado "device.crt" en las Autoridades de certificados raíz de confianza de diferentes maneras, pero sigo recibiendo el mismo error:

ingrese la descripción de la imagen aquí

Pero me di cuenta de que debía importar un certificado de autoridad raíz, no un certificado de dominio. Así que utilicé la consola mmc (Archivo / Agregar o quitar complementos / Certificados / Agregar / Computert Account / LocalComputer / OK) importé rootCA.pem en la tienda Trusted Root Certificates Authorities.

ingrese la descripción de la imagen aquí

Reinicie Chrome y et voilà funciona.

Con localhost:

ingrese la descripción de la imagen aquí

O con dirección IP:

ingrese la descripción de la imagen aquí

Lo único que no pude lograr es que tenga un cifrado obsoleto (cuadro rojo en la imagen). La ayuda es apreciada en este punto.

Con makecert no es posible agregar información SAN. Con New-SelfSignedCertificate (Powershell) puede agregar información SAN, también funciona.

UUHHIVS
fuente
2
Importante: Ejecute OpenSSL como administrador.
Jose A
Esta es la mejor respuesta y aún funciona para Chrome [71.0.3578.98] a partir de enero de 2019
ShadeBlack
Wow, funcionó, muchas gracias (en Chrome 75 - julio de 2019). No necesita el netsh httppaso a menos que use el servidor de Windows. Además, no creo que sea necesario exportar el archivo cert a pfx.
funcionamiento confirmado: Chrome 81 - mayo 2020 - Windows 7
petrosmm
15
  1. Agregue el certificado de CA en el almacén de CA raíz de confianza.

  2. ¡Ve a Chrome y habilita esta bandera!

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

Por último, simplemente use el dominio * .me o cualquier dominio válido como * .com y * .net y manténgalos en el archivo host. Para mis desarrolladores locales, uso * .me o * .com con un archivo host mantenido de la siguiente manera:

  1. Agregar al host. C: / windows / system32 / drivers / etc / hosts

    127.0.0.1 nextwebapp.me

Nota: Si el navegador ya está abierto al hacer esto, el error seguirá apareciendo. Entonces, cierre el navegador y comience nuevamente. Mejor aún, vaya de incógnito o comience una nueva sesión para obtener un efecto inmediato.

Ariel
fuente
Esto parece ser lo mismo que la respuesta más votada .
Michael - ¿Dónde está Clay Shirky?
Solo he agregado los nombres de dominio que están permitidos en el desarrollo local, es decir, los sitios * .me, al archivo host en Windows. Las personas agregan el certificado, pero a veces el host simplemente no puede verificar la verificación SSL, incluso si el certificado está instalado correctamente. En cuyo caso, creamos una nueva sesión. Solo he agregado esos consejos. He pasado por este agujero de conejo demasiado profundo, así que quería asegurarme de que alguien supiera qué hacer si fuera necesario.
Ariel
14

¿Está seguro de que la dirección del sitio que se está sirviendo es la misma que la del certificado? Tuve los mismos problemas con Chrome y un certificado autofirmado, pero al final descubrí que era increíblemente exigente con la validación del nombre de dominio en el certificado (como debería ser).

Chrome no tiene su propia tienda de certificados y usa la propia de Windows. Sin embargo, Chrome no proporciona ninguna forma de importar certificados en la tienda, por lo que debe agregarlos a través de IE.

Instalar certificados en Google Chrome

Instalar certificados en Internet Explorer

También eche un vistazo a esto para ver un par de enfoques diferentes para crear certificados autofirmados (supongo que está usando IIS como no lo ha mencionado).

Cómo crear un certificado autofirmado en IIS 7

Ira Rainey
fuente
El sitio en cuestión es localhost y el CN ​​del certificado es "localhost". Sí, instalé el certificado en el almacén de certificados de Windows. Tanto IE como Chrome se quejan del certificado.
pjohansson
No estoy seguro si está usando IIS o Apache, pero revise el enlace adicional que acabo de agregar para crear certificados autofirmados para IIS.
Ira Rainey
Debido a lo increíblemente exigente sobre la validación del nombre de dominio en la parte del certificado : ¿alguien sabe más sobre eso? Tengo un problema (es 2019) en Android 9 con un certificado raíz, que Google Chrome considera inseguro. Está bien para FF y en el escritorio.
BairDev
7

Seguí el proceso de usar lo que bjnord sugirió: Google Chrome, Mac OS X y certificados SSL autofirmados

Lo que se muestra en el blog no funcionó.

Sin embargo, uno de los comentarios al blog fue oro:

sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain site.crt

Tendrá que seguir el blog sobre cómo obtener el archivo cert, después de eso puede usar el comando anterior y debería estar listo.

James Oravec
fuente
7

La GUI para administrar certificados SSL en Chromium en Linux NO funcionó correctamente para mí. Sin embargo, sus documentos dieron la respuesta correcta. El truco consistía en ejecutar el siguiente comando que importa el certificado SSL autofirmado. Simplemente actualice el nombre de <certificate-nickname>y certificate-filename.cerluego reinicie chromium / chrome.

De los documentos:

En Linux, Chromium usa la base de datos compartida NSS. Si el administrador incorporado no funciona para usted, puede configurar certificados con las herramientas de línea de comandos de NSS.

Consigue las herramientas

  • Debian / Ubuntu: sudo apt-get install libnss3-tools

  • Fedora su -c "yum install nss-tools"

  • Gentoo: su -c "echo 'dev-libs/nss utils' >> /etc/portage/package.use && emerge dev-libs/nss"( Debe iniciar todos los comandos a continuación con el nssprefijo, por ejemplo nsscertutil,.) Opensuse:sudo zypper install mozilla-nss-tools

Para confiar en un certificado de servidor autofirmado, debemos usar

certutil -d sql:$HOME/.pki/nssdb -A -t "P,," -n <certificate-nickname> -i certificate-filename.cer

Listar todos los certificados

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

Los TRUSTARGS son tres cadenas de cero o más caracteres alfabéticos, separados por comas. Definen cómo se debe confiar en el certificado para SSL, correo electrónico y firma de objetos, y se explican en los documentos de certutil o en la publicación de blog de Meena sobre indicadores de confianza.

Agregue un certificado personal y una clave privada para la autenticación del cliente SSL Utilice el comando:

pk12util -d sql:$HOME/.pki/nssdb -i PKCS12_file.p12

para importar un certificado personal y una clave privada almacenados en un archivo PKCS # 12. Los TRUSTARGS del certificado personal se establecerán en "u, u, u".

Eliminar un certificado certutil -d sql:$HOME/.pki/nssdb -D -n <certificate nickname>

Extracto de: https://chromium.googlesource.com/chromium/src/+/HEAD/docs/linux_cert_management.md

TetraDev
fuente
7

Filippo Valsorda escribió una herramienta multiplataforma mkcertpara hacer esto por lotes tiendas de confianza. Supongo que lo escribió por la misma razón por la que hay tantas respuestas a esta pregunta: es difícil hacer lo "correcto" para los certificados de SubjectAltName firmados por una CA raíz de confianza.

mkcert está incluido en los principales sistemas de administración de paquetes para Windows, macOS y varios tipos de Linux.

mkcert

mkcertes una herramienta simple para hacer certificados de desarrollo de confianza local. No requiere configuración.

$ mkcert -install
Created a new local CA at "/Users/filippo/Library/Application Support/mkcert" 💥
The local CA is now installed in the system trust store! ⚡️
The local CA is now installed in the Firefox trust store (requires browser restart)! 🦊

$ mkcert example.com "*.example.com" example.test localhost 127.0.0.1 ::1
Using the local CA at "/Users/filippo/Library/Application Support/mkcert" ✨

Created a new certificate valid for the following names 📜
 - "example.com"
 - "*.example.com"
 - "example.test"
 - "localhost"
 - "127.0.0.1"
 - "::1"

The certificate is at "./example.com+5.pem" and the key at "./example.com+5-key.pem" ✅
Michael - ¿Dónde está Clay Shirky?
fuente
6

Al hacer clic en el pequeño icono de candado tachado al lado de la URL, obtendrá un cuadro como este:

ingrese la descripción de la imagen aquí

Después de hacer clic en el enlace Información del certificado , verá el siguiente cuadro de diálogo:

ingrese la descripción de la imagen aquí

Le indica qué almacén de certificados es el correcto, es el almacén de las Autoridades de certificación raíz de confianza .

Puede usar uno de los métodos descritos en las otras respuestas para agregar el certificado a esa tienda o usar:

certutil -addstore -user "ROOT" cert.pem
  • ROOT es el nombre interno del almacén de certificados mencionado anteriormente.
  • cert.pem es el nombre de su certificado autofirmado.
Der Hochstapler
fuente
1
certutil -addstore -user "ROOT" cert.pemes Windows
Pacerier
1
@Pacerier: Correcto, es para Windows.
Der Hochstapler el
Puede tenerlo, Trusted Root Certification Authoritiespero aún persiste el problema: imgur.com/a/mjlglVz imgur.com/a/n8BFH5S Windows 10, Chrome 78
tryHard
6

Esto funcionó para mí. Ver: http://www.robpeck.com/2010/10/google-chrome-mac-os-x-and-self-signed-ssl-certificates/#.Vcy8_ZNVhBc

En la barra de direcciones, haga clic en el pequeño candado con la X. Aparecerá una pequeña pantalla de información. Haga clic en el botón que dice "Información del certificado".

Haga clic y arrastre la imagen a su escritorio. Parece un pequeño certificado.

Haz doble clic en él. Esto abrirá la utilidad Keychain Access. Ingrese su contraseña para desbloquearla.

Asegúrese de agregar el certificado al llavero del sistema, no al llavero de inicio de sesión. Haga clic en "Confiar siempre", aunque esto no parece hacer nada.

Después de que se haya agregado, haga doble clic en él. Es posible que deba autenticarse nuevamente.

Expanda la sección "Confianza".

"Al usar este certificado", configurado en "Confiar siempre"

Vincil Bishop
fuente
6

Intenté todo y lo que lo hizo funcionar: al importar, seleccione la categoría correcta, a saber, las autoridades de certificados raíz de confianza :

(lo siento es alemán, pero solo sigue la imagen)

ingrese la descripción de la imagen aquí

Hannes Schneidermayer
fuente
6
mkdir CA
openssl genrsa -aes256 -out CA/rootCA.key 4096
openssl req -x509 -new -nodes -key CA/rootCA.key -sha256 -days 1024 -out CA/rootCA.crt

openssl req -new -nodes -keyout example.com.key -out domain.csr -days 3650 -subj "/C=US/L=Some/O=Acme, Inc./CN=example.com"
openssl x509 -req -days 3650 -sha256 -in domain.csr -CA CA/rootCA.crt -CAkey CA/rootCA.key -CAcreateserial -out example.com.crt -extensions v3_ca -extfile <(
cat <<-EOF
[ v3_ca ]
subjectAltName = DNS:example.com
EOF
)
Alex Ivasyuv
fuente
1
Este es el único que me funcionó con Chrome 77. Gracias por salvarme el día.
Romain
¿Cómo se usan los archivos generados? Entiendo cómo usar los archivos de dominio .crt y .key, pero ¿para qué sirve el archivo .csr? ¿Y cómo uso los archivos rootCA. *? Expanda su respuesta ...
Chiwda
Muchas gracias, me acabas de salvar el día!
dodancs
6

Esta publicación ya está inundada de respuestas, pero creé un script bash basado en algunas de las otras respuestas para que sea más fácil generar un certificado TLS autofirmado válido en Chrome (Probado en Chrome 65.x). Espero que sea útil para los demás.

script bash autofirmado

Después de instalar ( y confiar ) el certificado, no olvide reiniciar Chrome ( chrome://restart)


Otra herramienta que vale la pena consultar es el cfsslkit de herramientas de CloudFlare :

cfssl

Logan
fuente
6

Para crear un certificado autofirmado en Windows en el que Chrome v58 y versiones posteriores confíen, inicie Powershell con privilegios elevados y escriba:

New-SelfSignedCertificate -CertStoreLocation Cert:\LocalMachine\My -Subject "fruity.local" -DnsName "fruity.local", "*.fruity.local" -FriendlyName "FruityCert" -NotAfter (Get-Date).AddYears(10)
#notes: 
#    -subject "*.fruity.local" = Sets the string subject name to the wildcard *.fruity.local
#    -DnsName "fruity.local", "*.fruity.local"
#         ^ Sets the subject alternative name to fruity.local, *.fruity.local. (Required by Chrome v58 and later)
#    -NotAfter (Get-Date).AddYears(10) = make the certificate last 10 years. Note: only works from Windows Server 2016 / Windows 10 onwards!!

Una vez que haga esto, el certificado se guardará en los certificados de la computadora local en Personal \ Certificados almacén .

Desea copiar este certificado en el almacén Autoridades de certificación raíz de confianza \ Certificados .

Una forma de hacerlo: haga clic en el botón de inicio de Windows y escriba certlm.msc. Luego arrastre y suelte el certificado recién creado en el almacén Autoridades de certificación raíz de confianza \ Certificados según la captura de pantalla siguiente. ingrese la descripción de la imagen aquí

mpowrie
fuente
¿Cómo hacer esto en Mac por favor? gracias :)
Artanis Zeratul
@mpowrie. Habiendo generado esto, ¿cómo lo vinculo al servidor web Apache? En el servidor localhost.
Ifedi Okonkwo
Ifedi Okonkwo: No estoy seguro con el servidor web Apache, lo siento, pero con IIS agrega un enlace de sitio de tipo https, incluye el nombre de host completo y selecciona el certificado SSL.
mpowrie
Esto funciona como un encanto. Diré que deberá realizar un paso adicional si desea asignar ese certificado como un enlace ... y que el certificado también debe estar en Personal> Certificados. Arrastrar y soltar, por alguna razón, en realidad lo eliminó de los Certificados personales y lo colocó en los Trusted Certs. Así que asegúrese de copiarlo y pegarlo.
StephenPAdams
5

Corrección de SSL / HTTPS localhost en mac / osx:

  1. Haga clic en el candado rojo con la cruz en su barra de direcciones cuando intente abrir su entorno de host local https. Se abrirá una ventana con información sobre el certificado.

  2. Haga clic en la ventana de información "Detalles"

  3. Las herramientas para desarrolladores de Chrome se abren en la pestaña 'Seguridad'. Haga clic en Ver certificado . La imagen del certificado
  4. Agréguelo a su llavero 'Sistema' (no a su llavero 'inicio de sesión' que está seleccionado por defecto).

  5. Abra su llavero (nuevamente) y encuentre el certificado. Haga clic en él y asegúrese de "Confiar" en todos.

  6. Reinicie Chrome y debería funcionar.

cscheltinga
fuente
La interfaz gráfica estúpida puede no aceptar el certificado en MacoOS 10.14.5, pero puede importarlo con security import filename.pem -k ~/Library/Keychains/login.keychain. El gráfico da un error -25294
boatcoder
5

Estaba experimentando el mismo problema: había instalado el certificado en la tienda de Autoridades raíz de confianza de Windows y Chrome aún rechazó el certificado, con el error ERR_CERT_COMMON_NAME_INVALID. Tenga en cuenta que cuando el certificado no está instalado correctamente en la tienda, el error esERR_CERT_AUTHORITY_INVALID .

Según lo insinuado por el nombre del error, este comentario y esta pregunta , el problema radicaba en el nombre de dominio declarado en el certificado. Cuando se me solicitó el "Nombre común" al generar el certificado, tuve que ingresar el nombre de dominio que estaba usando para acceder al sitio ( localhosten mi caso). Reinicié Chrome usando chrome://restarty finalmente estuve contento con este nuevo certificado.

Hugo Wood
fuente
También estoy usando localhost pero Chrome no está contento con eso imgur.com/a/mjlglVz Windows 10, Chrome 78. Seguí las instrucciones desde aquí: stackoverflow.com/a/44398368/4983983
Accedo a
usar el nombre común "localhost" casi funcionó, y finalmente funcionó cuando también --allow-insecure-localhost
lancé
5

A partir de Chrome 58+ comencé a recibir un error de certificado en macOS debido a la falta de SAN. Aquí le mostramos cómo volver a obtener el bloqueo verde en la barra de direcciones.

  1. Genere un nuevo certificado con el siguiente comando:

    openssl req \
      -newkey rsa:2048 \
      -x509 \
      -nodes \
      -keyout server.key \
      -new \
      -out server.crt \
      -subj /CN=*.domain.dev \
      -reqexts SAN \
      -extensions SAN \
      -config <(cat /System/Library/OpenSSL/openssl.cnf \
          <(printf '[SAN]\nsubjectAltName=DNS:*.domain.dev')) \
      -sha256 \
      -days 720
  2. Importe el server.crten su KeyChain, luego haga doble clic en el certificado, expanda la Confianza y seleccione Confiar siempre

Actualice la página https://domain.dev en Google Chrome, para que el bloqueo verde vuelva.

Adriano Rosa
fuente
Esto funciona para subdominios api.domain.devpero todavía tengo una página de advertencia sobre domain.dev: ¿ This server could not prove that it is domain.dev; its security certificate is from *.domain.dev. This may be caused by a misconfiguration or an attacker intercepting your connection.Alguna idea?
François Romain
5

Para Chrome en MacOS, si ha preparado un certificado:

  • Salir de Chrome ( cmd+ Q).
  • Inicie la aplicación Keychain Access y abra la categoría "Certificados".
  • Arrastre su archivo de certificado a la ventana Acceso a llavero y escriba la contraseña para el archivo de certificado.
  • Haga doble clic en su certificado y despliegue la lista "Confianza".
    • En la fila "Al usar este certificado", elija "Confiar siempre".
    • Cierra estas cosas y escribe tu contraseña.
  • Inicie Chrome y borre todas las cachés.
  • Verifica que todo esté bien.
Alykoff Gali
fuente
5

Permitir que el localhost inseguro funcione bien a través de este método chrome: // flags / # allow-insecure-localhost

Solo que necesita crear su nombre de host de desarrollo en xxx.localhost.

Soja
fuente