Firefox no ofrece certificado de cliente: SSL_ERROR_HANDSHAKE_FAILURE_ALERT

Firefox no ofrece certificado de cliente: SSL_ERROR_HANDSHAKE_FAILURE_ALERT

Un certificado de CA expiró y se volvió a generar con la misma clave privada, con los certificados de cliente existentes funcionando en Chrome, pero fallando en Firefox:

Se produjo un error durante una conexión a ejemplo.com:
el par SSL no pudo negociar un conjunto aceptable de parámetros de seguridad:

Error code: SSL_ERROR_HANDSHAKE_FAILURE_ALERT

Firefox no solicita el certificado del cliente y no lo envía, sospechando que algo no coincide con el proceso de selección del certificado del cliente.

¿Cómo se podría depurar esto en el lado de Firefox?
¿Cómo decide Firefox cuándo solicitar/ofrecer el certificado de cliente?

Tenga en cuenta que el certificado del servidor [web] funciona correctamente y está fuera de alcance aquí.

Lo que se ha verificado:

  • Falla tanto en Firefox 78 en Mac como en Firefox 77 en Linux; el mismo certificado de cliente que funcionó con el certificado de CA anterior está presente en ambas instancias de Firefox.
  • En Mac, donde el mismo certificado de cliente funciona en Chrome y, por lo tanto, está presente en Keychain, habilitarlo security.osclientcerts.autoloaden Firefox no ayuda.
  • Los "nombres de CA de certificados de cliente aceptables" coinciden entre el certificado de CA antiguo y el nuevo.
  • Los "Tipos de certificados de cliente" parecen ser aceptables:
    Certificado nuevo: signo RSA, signo DSA, signo ECDSA
    Certificado antiguo: RSA DH fijo, DSS DH fijo, signo RSA, signo DSA
  • La presencia de extensiones v3 en el certificado de CA no importa (incluida la configuración de CA:TRUE).
  • Se utiliza la CRL pero no ha caducado y el certificado de cliente no se revoca.
  • El número de serie del certificado de CA antiguo y nuevo es diferente y parecen ser números aleatorios grandes.
  • El certificado de cliente no parece contener ningún certificado de cadena (caducado).
  • Regenerar el certificado de CA para que el período de validez comience antes que el certificado del cliente no ayuda.
  • Regenerar el certificado de CA para que sea SHA1 no ayuda (el antiguo certificado de CA era SHA1).

Certificados

Certificado CA (con extensiones X509v3; su presencia/falta no hace ninguna diferencia):

Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            cb:b5:11:9e:17:0f:aa:30
    Signature Algorithm: sha256WithRSAEncryption
        Issuer: <string>
        Validity
            Not Before: Jul 16 12:04:27 2020 GMT
            Not After : Apr 15 12:04:27 2030 GMT
        Subject: <string>
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (2048 bit)
                Modulus:
                    00:c1:16:6b:74:7e:b7:d0:da:8b:7f:55:bf:ee:c3:
                    c1:c3:ff:48:8a:b2:2d:a9:48:17:f1:aa:8b:36:34:
                    21:b2:d8:22:09:7c:ba:7c:61:83:a9:0e:40:69:4c:
                    b9:ed:25:dc:e6:f0:f8:45:b6:a6:14:2f:7a:2b:bc:
                    6d:9d:d3:d7:f5:4a:bd:dc:38:ed:88:f7:47:73:0a:
                    41:6f:15:a0:83:34:55:7b:4c:39:1d:8e:de:60:1f:
                    81:df:42:f5:b5:b9:0d:f5:90:9a:c4:80:ef:a7:1c:
                    38:93:c0:83:43:9b:5b:ef:cf:30:1a:70:29:26:e5:
                    e2:35:0e:81:24:e7:97:75:d1:ae:f7:a4:bc:e7:28:
                    20:52:87:58:87:41:2f:4b:ca:cd:2d:af:08:8b:bf:
                    1f:a5:a3:e1:f3:d0:81:f1:9c:f6:36:a2:d4:8f:2e:
                    19:67:72:2d:41:2c:43:d9:4f:b5:6b:2d:60:e0:77:
                    39:2e:53:20:7d:49:fa:c0:43:f2:03:cc:17:71:93:
                    cb:42:4e:42:41:23:2e:86:7c:b1:64:dc:a3:e4:7c:
                    60:37:43:56:ed:25:c5:97:ab:4d:90:98:c9:34:48:
                    b2:bc:34:f9:fb:89:cb:20:62:25:91:cf:8f:dd:bd:
                    40:d6:03:bf:b5:fc:cd:f8:c9:db:df:25:bb:f7:17:
                    31:8d
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Subject Key Identifier: 
                A8:C5:5A:EC:01:FD:DE:76:54:E1:94:97:EC:35:B6:C4:23:8A:73:FC
            X509v3 Authority Key Identifier: 
                keyid:A8:C5:5A:EC:01:FD:DE:76:54:E1:94:97:EC:35:B6:C4:23:8A:73:FC
                DirName:<string>
                serial:CB:B5:11:9E:17:0F:AA:30

            X509v3 Basic Constraints: critical
                CA:TRUE
            X509v3 Key Usage: critical
                Digital Signature, Certificate Sign, CRL Sign
    Signature Algorithm: sha256WithRSAEncryption
         33:90:66:8c:e4:99:c4:4e:1c:b7:5c:7d:b7:16:67:f1:b4:bc:
         d6:b2:ce:36:c3:4f:77:db:e3:22:89:5c:63:cb:a4:0b:62:b4:
         c5:72:d8:37:02:c7:1b:83:0b:03:ad:c6:51:20:e1:fd:c8:28:
         72:ea:62:da:be:e7:0b:68:e7:f2:7d:24:b6:59:2f:ab:4c:76:
         ba:42:38:fe:fb:e4:a1:91:ab:0f:9b:08:3f:d2:98:3b:c2:75:
         78:97:cf:97:34:8f:c1:3f:b9:bd:a4:53:6d:ea:bc:03:33:86:
         a3:46:8f:b8:6e:09:be:67:43:d8:c4:17:85:3a:9e:e9:c0:86:
         fc:d4:25:51:e0:36:d2:fc:ca:84:43:68:a8:75:f5:b8:a3:87:
         71:8d:b4:e9:78:69:b3:4d:52:10:ed:05:df:a0:b3:0d:34:f9:
         a0:99:99:29:12:74:d6:74:55:05:1b:7e:6c:81:48:ba:a2:05:
         9e:f3:33:2b:6f:14:25:8a:a9:c6:ff:7d:28:01:03:32:3e:46:
         68:b1:88:f2:04:b0:bd:83:a0:97:ca:12:84:03:49:9c:f6:63:
         14:24:45:ab:dd:73:97:33:a0:fd:0e:94:95:b1:cb:95:cc:c3:
         6c:82:fc:05:70:3d:9b:0e:ea:05:6e:e2:36:c1:2f:b3:87:b6:
         ca:58:59:b1

Certificado de cliente:

Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 302 (0x12e)
        Signature Algorithm: sha256WithRSAEncryption
        Issuer: <string>
        Validity
            Not Before: Mar 26 08:11:41 2020 GMT
            Not After : Mar 26 08:11:41 2022 GMT
        Subject: <string>
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                RSA Public-Key: (2048 bit)
                Modulus:
                    00:b1:07:3c:54:4f:4c:77:66:75:21:c5:9d:1f:b0:
                    da:92:ee:5f:4f:a9:79:a3:56:a9:fd:ec:0f:ff:c9:
                    23:de:3f:6a:f4:e3:5b:f5:d0:ef:cf:ae:1d:a8:80:
                    21:76:39:1e:e6:90:1a:da:dd:07:21:68:98:73:29:
                    ea:f2:40:fe:9f:a3:b9:af:89:20:7d:0f:22:cb:cc:
                    50:de:30:af:66:00:52:93:2c:f1:a0:f5:7d:46:6e:
                    c9:63:d9:c4:24:0a:db:9c:8c:66:52:04:f1:da:f8:
                    8b:71:27:46:60:98:94:49:b0:b2:05:e5:5d:7c:05:
                    8d:e0:51:35:eb:38:ae:d3:d7:dc:a5:21:72:d4:b9:
                    9a:be:29:3f:04:bd:11:c3:43:b7:d8:56:2b:4b:60:
                    08:9e:a9:77:55:a4:e6:d1:b8:b6:2b:57:ff:89:bc:
                    0a:87:b2:43:71:0c:aa:65:28:20:09:68:63:0b:d8:
                    2e:de:05:bf:40:95:a7:24:b4:2e:a0:c4:d8:37:66:
                    3e:28:d1:7b:4e:77:4f:23:7e:e7:44:85:3d:70:fc:
                    eb:34:06:2a:9d:40:c9:30:0f:a6:df:0a:51:1e:54:
                    31:22:a9:d7:8b:7c:84:88:ef:77:ca:34:00:27:52:
                    ef:34:d0:a5:a2:41:79:bd:45:0d:85:70:00:01:2c:
                    6a:f7
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Basic Constraints: 
                CA:FALSE
            X509v3 Key Usage: 
                Digital Signature, Key Encipherment, Data Encipherment
            X509v3 Extended Key Usage: 
                TLS Web Client Authentication
            Netscape Cert Type: 
                SSL Client
    Signature Algorithm: sha256WithRSAEncryption
         5c:c1:da:4a:ba:37:21:54:24:21:f5:6f:83:b4:74:78:17:cb:
         d3:f8:63:a3:07:9c:34:7c:51:e5:97:4d:70:41:fa:91:1a:ce:
         6f:87:32:24:81:65:00:3b:9a:c1:f6:32:82:9a:cc:6d:68:3e:
         03:b7:3a:3d:3c:81:15:89:f8:12:27:b3:cd:d3:e5:7a:bd:e9:
         49:f4:c1:19:58:39:dc:13:58:2c:8b:1b:a7:c6:ae:28:ad:4c:
         9e:76:77:ff:fa:36:04:94:fb:bd:87:fe:f0:a5:2e:85:d8:29:
         50:b6:c5:43:9b:f4:bd:5a:35:40:1f:23:59:e2:04:84:f2:b9:
         91:ef:20:fe:99:28:e4:df:71:96:4a:ab:35:5c:57:c2:46:80:
         20:7c:be:49:37:18:d1:0f:07:47:54:1c:e3:33:78:e0:c1:61:
         93:bf:95:fd:f4:bd:27:a4:f1:6b:ba:62:8c:79:a0:57:ee:d3:
         bd:08:73:b1:37:41:10:68:38:7a:91:c5:3a:64:1b:54:66:b4:
         19:cc:16:16:5d:94:7a:e2:f7:2b:79:bd:2a:ab:01:67:32:e9:
         4a:2b:fb:da:df:5b:65:36:1a:8b:1d:a9:3c:2a:3f:bd:02:f0:
         eb:9b:e2:3b:46:0d:44:f8:ac:77:ac:6f:60:df:a5:27:00:4c:
         8c:9f:a0:2c

Respuesta1

Aparentemente, el problema era que el certificado anterior se usaba PrintableStringspara todas las cadenas, pero el nuevo se usaba UTF8Stringspara algunas. Regenerar el nuevo PrintableStringslo soluciona.

Cuando se utilizan herramientas OpenSSL, elmáscara_cadenaLa opción permite controlar la codificación de campos.

Todo el crédito por detectar la diferencia es para Dana, ingeniera de seguridad de Mozilla.

información relacionada