CA 証明書の有効期限が切れ、同じ秘密キーで再生成されました。既存のクライアント証明書は Chrome では機能しますが、Firefox では機能しません。
example.com への接続中にエラーが発生しました:
SSL ピアは許容可能なセキュリティ パラメータのセットをネゴシエートできませんでした:Error code: SSL_ERROR_HANDSHAKE_FAILURE_ALERT
Firefox はクライアント証明書を要求せず、証明書を送信しません。これは、クライアント証明書の選択プロセスに何かが一致していないことが疑われるためです。
これを Firefox 側でデバッグするにはどうすればよいでしょうか?
Firefox はクライアント証明書を要求または提供するタイミングをどのように決定するのでしょうか?
[Web]サーバー証明書は正常に動作しており、ここでは範囲外であることに注意してください。
検証された内容:
- Mac 上の Firefox 78 と Linux 上の Firefox 77 の両方で失敗します。以前の CA 証明書で機能していた同じクライアント証明書が両方の Firefox インスタンスに存在します。
- Mac では、同じクライアント証明書が Chrome で機能し、キーチェーンに存在するため、
security.osclientcerts.autoload
Firefox で有効にしても役に立ちません。 - 「受け入れ可能なクライアント証明書 CA 名」は、古い CA 証明書と新しい CA 証明書間で一致します。
- 「クライアント証明書の種類」は許容されるようです:
新しい証明書: RSA 署名、DSA 署名、ECDSA 署名
古い証明書: RSA 固定 DH、DSS 固定 DH、RSA 署名、DSA 署名 - CA 証明書に v3 拡張機能が存在するかどうかは関係ありません ( の設定を含む
CA:TRUE
)。 - CRL は使用されていますが、期限が切れておらず、クライアント証明書は失効していません。
- 古い CA 証明書と新しい CA 証明書のシリアル番号は異なり、大きなランダムな数字のようです。
- クライアント証明書には (期限切れの) チェーン証明書が含まれていないようです。
- クライアント証明書より前に有効期間が開始されるように CA 証明書を再生成しても役に立ちません。
- CA 証明書を SHA1 に再生成しても役に立ちません (古い CA 証明書は SHA1 でした)。
証明書
CA 証明書 (X509v3 拡張機能付き。その存在/欠如は関係ありません):
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
クライアント証明書:
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
答え1
PrintableStrings
どうやら、古い証明書ではすべての文字列に が使用されていたが、新しい証明書では一部の文字列に が使用されていたことに問題があったようです。 を使用してUTF8Strings
新しい証明書を再生成すると、問題はPrintableStrings
修正されます。
OpenSSLツールを使用すると、文字列マスクオプションを使用すると、フィールドのエンコーディングを制御できます。
この違いを発見した功績は、Mozilla のセキュリティ エンジニアである Dana に帰属します。