Certificado SSL autofirmado no válido: “Falta nombre alternativo del sujeto”

Recientemente, Chrome dejó de funcionar con mis certificados SSL autofirmados y cree que son inseguros. Cuando miro el DevTools | Security en DevTools | Security Pestaña de DevTools | Security , puedo ver que dice

Sujeto Nombre alternativo que falta El certificado para 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 Existen problemas con la cadena de certificados del sitio (net :: ERR_CERT_COMMON_NAME_INVALID).

¿Cómo puedo arreglar esto?

Para solucionar esto, debe proporcionar un parámetro adicional a openssl cuando está creando el certificado, básicamente

-sha256 -extfile v3.ext

donde v3.ext es un archivo como tal, con %%DOMAIN%% reemplazado por el mismo nombre que usa como Common Name . Más información aquí y aquí . Tenga en cuenta que normalmente debe establecer el Common Name y %%DOMAIN%% en el dominio para el que está intentando generar un certificado. Entonces, si fuera www.mysupersite.com , entonces usarías eso para ambos.

v3.ext

 authorityKeyIdentifier=keyid,issuer basicConstraints=CA:FALSE keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment subjectAltName = @alt_names [alt_names] DNS.1 = %%DOMAIN%% 

Nota: las secuencias de comandos que abordan este problema y crean certificados SSL de confianza para usar en Chrome, Safari y clientes de Java se pueden encontrar aquí.

Otra nota : si todo lo que intenta hacer es evitar que Chrome arroje errores al visualizar un certificado autofirmado, puede decirle a Chrome que ignore todos los errores SSL para TODOS los sitios al iniciarlo con una opción de línea de comando especial, como se detalla aquí en SuperUser

Creé un script bash para facilitar la generación de certificados TLS autofirmados que son válidos en Chrome.

self-signed-tls bash script

Después de instalar los certificados, asegúrese de reiniciar chrome ( chrome://restart ). Probado en Chrome 65.x y todavía está funcionando.


Otra herramienta (mucho más robusta) que vale la pena consultar es el cfssl herramientas cfssl de CloudFlare:

cfssl

La siguiente solución funcionó para mí en Chrome 65 ( ref ) –

Crear un archivo de configuración de OpenSSL (ejemplo: req.cnf)

 [req] distinguished_name = req_distinguished_name x509_extensions = v3_req prompt = no [req_distinguished_name] C = US ST = VA L = SomeCity O = MyCompany OU = MyDivision CN = www.company.com [v3_req] keyUsage = critical, digitalSignature, keyAgreement extendedKeyUsage = serverAuth subjectAltName = @alt_names [alt_names] DNS.1 = www.company.com DNS.2 = company.com DNS.3 = company.net 

Crea el certificado que hace referencia a este archivo de configuración

 openssl req -x509 -nodes -days 730 -newkey rsa:2048 \ -keyout cert.key -out cert.pem -config req.cnf -sha256 

Simplemente uso el parámetro -subj agregando la dirección IP de la máquina. Así que resuelto con un solo comando.

 sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -sha256 -subj '/CN=my-domain.com/subjectAltName=DNS.1=192.168.0.222/' -keyout my-domain.key -out my-domain.crt 

Puede agregar otros atributos como C, ST, L, O, OU, emailAddress para generar certificados sin que se le solicite.

Pude deshacerme de (net :: ERR_CERT_AUTHORITY_INVALID) cambiando el valor de DNS.1 del archivo v3.ext

[alt_names] DNS.1 = domainname.com

Cambie domainname.com con su propio dominio.

en MAC a partir de la versión 67.0.3396.99 de Chrome, mi certificado autofirmado se detuvo para funcionar.

la regeneración con todo lo que aquí está escrito no funcionó.

ACTUALIZAR

tuve la oportunidad de confirmar que mi enfoque funciona hoy :). Si no funciona para usted, asegúrese de que esté usando este enfoque

 v3.ext authorityKeyIdentifier=keyid,issuer basicConstraints=CA:FALSE keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment subjectAltName = @alt_names [alt_names] DNS.1 =  $ 

copiado desde aquí https://ksearch.wordpress.com/2017/08/22/generate-and-import-a-self-signed-ssl-certificate-on-mac-osx-sierra/

FINALIZAR ACTUALIZACIÓN

finalmente pude ver Secure verde solo cuando eliminé mi certificado del sistema y lo agregué al llavero local . (si hay uno, colóquelo primero). No estoy seguro si se trata pero en mi caso descargué el certificado a través de Chrome, y verifiqué que la fecha de creación es hoy, así que es la que acabo de crear.

Espero que sea útil que alguien pase un día en él.

¡nunca actualice Chrome!