我正在使用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;
...
Run Code Online (Sandbox Code Playgroud)
我使用reprepro来配置一个apt repo.我可以使用apt-get update更新到这个repo而没有任何错误但是当我注释掉ssl_crl以便使用撤销列表时,Log display:
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"
Run Code Online (Sandbox Code Playgroud)
我不确定为什么nginx可以找到我的证书撤销列表.
发生这种情况是因为nginx需要为ssl_client_certificate证书链中提到的每个证书提供 CRL ,包括根 CA 的 CRL。
当我创建根 CA 和中间 CA 以便为 Intranet 站点生成证书时,我自己就遇到了这个问题。当我将nginx配置为使用 SSL 客户端身份验证时,我只使用了来自中间 CA 的 CRL。 nginx需要查看链中每个证书的 CRL,包括中间 CA,以确保中间 CA 的证书没有被根撤销。将根 CRL 连接到中间 CRL 解决了该问题。
default_crl_days) 是 30 天,因此您需要制定一个系统来使所有内容保持最新。| 归档时间: |
|
| 查看次数: |
3165 次 |
| 最近记录: |