Nginx无法获取证书CRL

Nginx无法获取证书CRL,nginx,Nginx,我使用nginx(1.1.9)通过使用客户端证书功能在https上提供debian软件包 listen 443 ssl; ... ssl_certificate /etc/ssl/ca.chain.crt; ssl_certificate_key /etc/ssl/server.key; #ssl_crl /etc/ssl/ca-crl.pem; ssl_client_certificate /etc/ssl/ca.pem; ssl_verify

我使用nginx(1.1.9)通过使用客户端证书功能在https上提供debian软件包

listen 443 ssl;

 ...

 ssl_certificate     /etc/ssl/ca.chain.crt;
 ssl_certificate_key /etc/ssl/server.key;
 #ssl_crl             /etc/ssl/ca-crl.pem;
 ssl_client_certificate  /etc/ssl/ca.pem;
 ssl_verify_client   on; 
 ssl_verify_depth 2;   
 ssl_protocols SSLv2 SSLv3 TLSv1 TLSv1.1;

 ...

 error_log /var/log/nginx/error.log debug;
 ...
我使用reprepro配置apt repo。我可以使用apt get update对此repo进行配置,不会出现任何错误,但当我注释掉ssl_crl以使用吊销列表时,日志显示:

client SSL certificate verify error: (3:unable to get certificate CRL) while reading client request headers, client: xxx.xxx.xxx.xxx, server: apt.myrepo.com, request: "GET /ubuntu/dists/precise/non-free/i18n/Translation-en HTTP/1.1", host: "apt.myrepo.com"

我不确定为什么nginx可以找到我的证书吊销列表。

这是因为nginx需要为
ssl\u client\u certificate
证书链中提到的每个证书(包括根CA的CRL)设置CRL

我自己在创建根CA和中间CA以生成intranet站点的证书时遇到了这个问题。当我将nginx配置为使用SSL客户端身份验证时,我只使用了来自中间CA的CRL。nginx需要查看链中每个证书(包括中间CA)的CRL,以确保中间CA的证书没有被根用户吊销。将根CRL连接到中间CRL修复了该问题


笔记
  • 默认的CRL有效期(
    default\u CRL\u days
    )为30天,因此您需要制定一个系统,使所有内容保持最新
  • 谢谢你,我在谷歌搜索了很多次后发现,这表明我在链中丢失了另一个证书

谢谢anum90,我忘了格式化代码:)