Recientemente, Chrome dejó de funcionar con mis certificados SSL autofirmados y cree que no son seguros. Cuando miro el certificado en la DevTools | Securitypestaña, puedo ver que dice
Falta el nombre alternativo del sujeto El certificado de este sitio no contiene una extensión de nombre alternativo del sujeto que contenga un nombre de dominio o una dirección IP.
Error de certificado Hay problemas con la cadena de certificados del sitio (net :: ERR_CERT_COMMON_NAME_INVALID).
¿Cómo puedo arreglar esto?
                    
                        google-chrome
                                ssl
                                https
                                pkix
                                
                    
                    
                        Brad Parks
fuente
                
                fuente

CN=www.example.comprobablemente esté mal. Los nombres de host siempre van en la SAN . Si está presente en el CN , entonces también debe estar presente en el SAN (en este caso, debe enumerarlo dos veces). Para conocer más reglas y motivos, consulte ¿Cómo se firma una solicitud de firma de certificado con su autoridad de certificación y Cómo crear un certificado autofirmado con openssl? También deberá colocar el certificado autofirmado en el almacén de confianza adecuado.Respuestas:
Para solucionar este problema, debe proporcionar un parámetro adicional
opensslcuando esté creando el certificado, básicamente-sha256 -extfile v3.extdonde
v3.extes un archivo como ese,%%DOMAIN%%reemplazado con el mismo nombre que usa como suCommon Name. Más información aquí y aquí . Tenga en cuenta que normalmente estableceríaCommon Namey%%DOMAIN%%en el dominio para el que está intentando generar un certificado. Entonces, si lo fuerawww.mysupersite.com, entonces lo usarías para ambos.v3.ext
Nota: Los scripts que abordan este problema y crean certificados ssl totalmente confiables para usar en Chrome, Safari y desde clientes Java se pueden encontrar aquí.
Otra nota : si todo lo que está tratando de hacer es evitar que Chrome arroje errores al ver un certificado autofirmado, puede decirle a Chrome que ignore todos los errores de SSL para TODOS los sitios iniciándolo con una opción de línea de comando especial, como se detalla aquí en SuperUser
fuente
bin\openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 365 -sha256 -extfile v3.ext. Por supuesto, aún necesita guardarlov3.exten un archivo en la misma carpeta.unknown option -extfile. ¿Cómo puedo solucionar esto?extfiledirectiva en el comando openssl incorrecto? En lugar de usarse enopenssl req -new ..., se usa enopenssl x509 -req .... Al menos eso es lo que dijo alguien aquí , lo que parece cierto por el ejemplo que tengo en otra respuesta a una pregunta similar sobre cómo generar completamente estos certificadosLa siguiente solución funcionó para mí en Chrome 65 ( ref ) -
Cree un archivo de configuración de OpenSSL (ejemplo: req.cnf)
Cree el certificado que hace referencia a este archivo de configuración
fuente
basicConstraints = CA:truefalta aquí ?Script de Bash
Creé un script bash para facilitar la generación de certificados TLS autofirmados que son válidos en Chrome.
Probado
Chrome 65.xy todavía funciona. Asegúrese de reiniciar Chrome después de instalar nuevos certificados.Otros recursos
Otra herramienta (mucho más robusta) que vale la pena revisar es el
cfsslkit de herramientas de CloudFlare :fuente
Simplemente uso el
-subjparámetro agregando la dirección IP de la máquina. Así que resuelto con un solo comando.Puede agregar otros atributos como C, ST, L, O, OU, emailAddress para generar certificados sin que se le solicite.
fuente
openssl.exe req -x509 -sha256 -newkey rsa:2048 -keyout certificate.key -out certificate.crt -days 365 -nodes -subj "/CN=my.domain.com" -addext "subjectAltName=DNS:my.domain.com"IIS luego necesita*.pfxformato:openssl.exe pkcs12 -export -out certificate.pfx -inkey certificate.key -in certificate.crtTuve muchos problemas para que los certificados autofirmados funcionaran en macos / Chrome. Finalmente encontré Mkcert, "Una herramienta simple de configuración cero para crear certificados de desarrollo de confianza local con cualquier nombre que desee". https://github.com/FiloSottile/mkcert
fuente
Haga una copia de su configuración de OpenSSL en su directorio de inicio:
o en Linux:
Agregue el nombre alternativo del sujeto a
openssl-temp.cnf, debajo de[v3_ca]:Reemplácelo
localhostpor el dominio para el que desea generar ese certificado.Generar certificado:
A continuación, puede eliminar
openssl-temp.cnffuente
Pude deshacerme de (net :: ERR_CERT_AUTHORITY_INVALID) cambiando el valor DNS.1 del archivo v3.ext
[alt_names] DNS.1 = nombre de dominio.com
Cambie domainname.com con su propio dominio.
fuente
Aquí hay una forma muy sencilla de crear un certificado IP en el que Chrome confiará.
El archivo ssl.conf ...
Donde, por supuesto, 192.168.1.10 es la IP de red local en la que queremos que Chrome confíe.
Crea el certificado:
En Windows, importe el certificado en Trusted Root Certificate Store en todos los equipos cliente. En un teléfono o tableta Android, descargue el certificado para instalarlo. Ahora Chrome confiará en el certificado en Windows y Android.
En el cuadro de desarrollo de Windows, el mejor lugar para obtener openssl.exe es desde "c: \ Archivos de programa \ Git \ usr \ bin \ openssl.exe"
fuente
en MAC partir de Chrome Versión 67.0.3396.99 mi certificado autofirmado dejó de funcionar.
regeneración con todo lo que está escrito aquí no funcionó.
ACTUALIZAR
tuve la oportunidad de confirmar que mi enfoque funciona hoy :). Si no funciona para usted, asegúrese de que está utilizando este enfoque
copiado de aquí https://ksearch.wordpress.com/2017/08/22/generate-and-import-a-self-signed-ssl-certificate-on-mac-osx-sierra/
FIN DE ACTUALIZAR
finalmente fue capaz de ver el color verde seguro sólo cuando eliminado mi certificado de sistema , y añadido a locales llavero. (si hay uno, déjelo caer primero). No estoy seguro de si importa, pero en mi caso descargué el certificado a través de Chrome y verifiqué que la fecha de creación es hoy, por lo que es el que acabo de crear.
Espero que sea útil para alguien que le dedique un día.
¡Nunca actualice Chrome!
fuente
Si desea ejecutar su servidor localhost, debe configurar
CN = localhostyDNS.1 = localhost.fuente