具有间接 CRL 的 NGINX 客户端证书

具有间接 CRL 的 NGINX 客户端证书

我正在尝试使用 Nginx SSL 模块实现 mTLS。一切正常,直到我给出以 PEM 格式连接的 Nginx CRL 文件,因为其中一个 CRL 是间接 CRL。

叶证书链如下所示:

Root -> CA1 -> CA2 -> CA3 -> Leaf

但在我的用例中,CA2 和 CA3 将无法颁发 CRL,因此 CA1 签署 CRL 颁发者。此 CRL 颁发者将为已撤销的 CA3 证书和 Leaf 证书颁发 CRL。CA3 和 Leaf 证书在 CDP 中包含 CRL 颁发者 DN,并且 CRL 文件格式正确,CRL 扩展“分发点”带有 indirectCRL=true,列表中的每个已撤销证书在正确的 CRL 条目扩展中包含其颁发者 DN。

我可以使用 OpenSSL 但使用“不受信任”选项来验证证书的撤销。

$ openssl verify -crl_check -extended_crl -CAfile chain.pem -CRLfile concatcrl.pem -untrusted crlissuer.pem leafcert.pem

但我无法使用 Nginx 进行同样的验证:

client SSL certificate verify error: (3:unable to get certificate CRL) while reading client request headers

我的 Nginx 配置是:

ssl_trusted_certificate /etc/nginx/clients-cert/crlissuer.pem;
ssl_client_certificate /etc/nginx/clients-cert/root+ca1.pem;
ssl_verify_client on;
ssl_verify_depth 10;
ssl_crl /var/crl/chain-crl.pem;

(客户端将发送其叶证书+CA3+CA2)。

如果我注释指令“ssl_crl”,我的客户端就可以连接到服务器。我还通过将 crliissuer.pem 添加到链中,尝试了 ssl_trusted_certificate 和 ssl_client_certificate 的不同组合,两个指令中的链都带有 CRL 颁发者。

我找不到其他方法可以解决这个问题。请帮忙。

相关内容