Recientemente, Chrome dejó de funcionar con mis certificados SSL autofirmados y cree que no son seguros. Cuando miro el certificado en la DevTools | Security
pestañ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.com
probablemente 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
openssl
cuando esté creando el certificado, básicamente-sha256 -extfile v3.ext
donde
v3.ext
es 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 Name
y%%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.ext
en un archivo en la misma carpeta.unknown option -extfile
. ¿Cómo puedo solucionar esto?extfile
directiva 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:true
falta 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.x
y 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
cfssl
kit de herramientas de CloudFlare :fuente
Simplemente uso el
-subj
pará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*.pfx
formato:openssl.exe pkcs12 -export -out certificate.pfx -inkey certificate.key -in certificate.crt
Tuve 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
localhost
por el dominio para el que desea generar ese certificado.Generar certificado:
A continuación, puede eliminar
openssl-temp.cnf
fuente
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 = localhost
yDNS.1 = localhost
.fuente