Cómo solucionar errores: "Subject Alternative Name Missing"; “NET::ERR_CERT_COMMON_NAME_INVALID”; o "Su conexión no es privada" en Google Chrome

RELACIONADO CON:

  • Navegador web:
    • Versión de Google Chrome 58 o versiones posteriores
  • Productos Epson:
    • TM-T88VI-i / TM-T88VI-iHub
    • TM-m30
    • TM-P80 / TM-P60II / TM-P20
    • UB-E04 / UB-R04

EXPLICACIÓN:

El problema:

Para Chrome 58 y versiones posteriores, la extesión del Nombre Alternativo del Sujeto (no el Nombre Común), es utilizada para hacer coincidir el nombre de dominio y el certificado del sitio. Si el certificado no tiene la extensión correcta del Nombre Alternativo del Sujeto, el usuario recibirá un error diciendo que la conexión no es privada.

Contexto:

RFC 2818 describe dos métodos para hacer coincidir el nombre de dominio contra el certificado:

  • Utilizando los nombres disponibles dentro de la extensión de Nombre Alternativo del Sujeto; o,
  • Utilizando el Nombre Común.

El uso del Nombre Común fue desaprobado en RFC 2818 (publicado 2000), pero el soporte permaneció en la mayoría de clientes. Por razones de seguridad, este soporte ha sido eliminado.

Soluciones:

Existen dos opciones para usuarios de Google Chrome con este problema:

  1. Inhabilite el control del Nombre Alternativo del Sujeto en Chrome.

    Esto es una solución que no funcionará en versiones de Google Chrome posteriores a 65, y debería utilizarse únicamente como solución temportal.

  2. Sustituya el certificado con uno que use la extensión del Nombre Alternativo del Sujeto.

    Si se implementa correctamente, esto es una solución permanente y debería funcionar para la mayoría o todos los navegadores que implementen el control del Nombre Alternativo del Sujeto.

Cómo inhabilitar el control del Nombre Alternativo del Sujeto en Chrome:

Añadiendo los siguientes ajustes, Chrome puede ser forzado a permitir certificados que faltan en la extensión del Nombre Alternativo del Sujeto:

  • Registro de Windows (REG_DWORD):

    Software\Policies\Google\Chrome\EnableCommonNameFallbackForLocalAnchors

  • Mac/Linux - Nombre de preferencia (Boolean):

    EnableCommonNameFallbackForLocalAnchors

  • Android - Nombre de restricción (Boolean):

    EnableCommonNameFallbackForLocalAnchors

Cuando esta configuración sea habilitada, Google Chrome utilizará un certificado de servidor para hacer coincidir el nombre de host si al certificado le falta una extensión de Nombre Alternativo del Sujeto, siempre y cuando valide y encadene exitosamente a un certificado de CA instalado localmente.

Ejemplo:

Una llave de registro puede ser añadida en Windows introduciendo lo siguiente en el Símbolo de Sistema:

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

Esta solución dejará de funcionar con versiones de Google Chrome posteriores a 65.

 

Ejemplo de creación y carga de un certificado utilizando la extensión del Nombre Alternativo

 

Para este ejemplo, crearemos una carpeta de configuración que contenga la información requerida:


Este archivo contiene detalles específicos en relación a los objetos de seguridad que queremos generar, incluyendo los nombres de Host, marcados en rojo. Esto puede ser una dirección IP o DNS.

Una vez este archivo haya sido generado, podremos ejecutar req para generar los objetos de seguridad. Por ejemplo:

Para poder cargar esto a la impresora es necesario juntar los objetos de seguridad (llave y certificado) en un archivo PKCS#12. Por ejemplo:

OpenSSL le pedirá interactivamente una contraseña.

El resultado es un archivo PKCS#12 listo para ser cargado al servidor (impresora), y un certificado listo para ser instalado en el cliente.