Ein CA-Zertifikat ist abgelaufen und wurde mit demselben privaten Schlüssel neu generiert. Die vorhandenen Client-Zertifikate funktionieren in Chrome, schlagen jedoch in Firefox fehl:
Während einer Verbindung mit example.com ist ein Fehler aufgetreten:
Der SSL-Peer konnte keinen akzeptablen Satz Sicherheitsparameter aushandeln:Error code: SSL_ERROR_HANDSHAKE_FAILURE_ALERT
Firefox fordert das Client-Zertifikat nicht an und sendet es nicht – der Verdacht liegt nahe, dass beim Auswahlprozess des Client-Zertifikats etwas nicht stimmt.
Wie könnte dies auf der Firefox-Seite debuggt werden?
Wie entscheidet Firefox, wann das Client-Zertifikat angefordert bzw. angeboten werden soll?
Bitte beachten Sie, dass das [Web-]Serverzertifikat ordnungsgemäß funktioniert und hier außerhalb des Geltungsbereichs liegt.
Was wurde überprüft:
- Schlägt sowohl bei Firefox 78 auf dem Mac als auch bei Firefox 77 unter Linux fehl; in beiden Firefox-Instanzen ist dasselbe Client-Zertifikat vorhanden, das mit dem vorherigen CA-Zertifikat funktioniert hat.
- Auf dem Mac, wo dasselbe Client-Zertifikat in Chrome funktioniert und somit im Schlüsselbund vorhanden ist,
security.osclientcerts.autoload
hilft die Aktivierung in Firefox nicht. - „Akzeptable CA-Namen des Client-Zertifikats“ stimmen zwischen dem alten und dem neuen CA-Zertifikat überein.
- "Client Certificate Types" scheint akzeptabel zu sein:
Neues Zertifikat: RSA-Zeichen, DSA-Zeichen, ECDSA-Zeichen
Altes Zertifikat: RSA fixed DH, DSS fixed DH, RSA-Zeichen, DSA-Zeichen - Das Vorhandensein von v3-Erweiterungen im CA-Zertifikat spielt keine Rolle (einschließlich der Einstellung von
CA:TRUE
). - CRL wird verwendet, ist aber nicht abgelaufen, und das Client-Zertifikat wurde nicht widerrufen.
- Die Seriennummern auf dem alten und neuen CA-Zertifikat sind unterschiedlich und scheinen aus großen Zufallszahlen zu bestehen.
- Das Client-Zertifikat scheint keine (abgelaufenen) Kettenzertifikate zu enthalten.
- Das erneute Generieren des CA-Zertifikats, damit die Gültigkeitsdauer vor dem Client-Zertifikat beginnt, hilft nicht.
- Das erneute Generieren des CA-Zertifikats auf SHA1 hilft nicht (das alte CA-Zertifikat war SHA1).
Zertifikate
CA-Zertifikat (mit X509v3-Erweiterungen; deren Vorhandensein/Fehlen macht keinen Unterschied):
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
Client-Zertifikat:
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
Antwort1
Offenbar bestand das Problem darin, dass das alte Zertifikat PrintableStrings
für alle Zeichenfolgen verwendet wurde, das neue jedoch UTF8Strings
für einige. PrintableStrings
Das erneute Generieren des neuen Zertifikats behebt das Problem.
Bei Verwendung von OpenSSL-Tools ist dieZeichenfolgenmaskeMit dieser Option können Sie die Feldkodierung steuern.
Das Verdienst, den Unterschied entdeckt zu haben, gebührt Dana, Sicherheitsingenieur bei Mozilla.