Pav*_*tis 6 linux ssl nginx crl
情况是这样 - 有一个透明的 nginx 代理可以处理 SSL 证书,并且在我们决定添加撤销列表管理之前做得很好,这是出于安全原因所必需的。这是“ssl_crl”行发挥作用并搞砸一切的时候。
server {
listen 80;
rewrite ^ https://$host$request_uri permanent;
}
server {
listen 443 ssl;
server_name example.com;
ssl on;
ssl_certificate /home/netadmin/keys/tid.crt;
ssl_certificate_key /home/netadmin/keys/tid.key;
ssl_session_cache shared:SSL:10m;
ssl_client_certificate /home/netadmin/keys/personchain.pem;
ssl_crl /home/netadmin/keys/personlist.crl;
ssl_verify_client on;
ssl_verify_depth 2;
error_log /var/log/nginx/debug.log debug;
location / {
proxy_pass http://111.111.111.111:80;
}
Run Code Online (Sandbox Code Playgroud)
每当用户尝试使用 SSL 进行身份验证时,服务器总是会给出“400 Bad Request”错误。请注意,完全相似(因为语法不同)的配置在 Apache 中完美运行。现在证书是完美无缺的,这已经被多次证明了,这里是验证检查,例如
openssl crl -CAfile personchain.pem -inform PEM -in personlist.crl -lastupdate -nextupdate -noout
verify OK
lastUpdate=Apr 22 14:59:18 2013 GMT
nextUpdate=Apr 29 14:59:18 2013 GMT
Run Code Online (Sandbox Code Playgroud)
CRL 链接正常工作,没有任何问题,这是错误日志的一部分。
2013/04/23 15:47:42 [info] 3612#0: *1 client SSL certificate verify error: (3:unable to get certificate CRL) while reading client request headers, client: 192.168.122.1, server: example.com, request: "GET / HTTP/1.1", host: "example.com"
Run Code Online (Sandbox Code Playgroud)
这基本上是唯一的错误,正如我之前所说,相同的证书适用于 Apache。我认为这可能是一个错误,但最近一次类似错误的通知是在 2011 年,所以我怀疑没有人解决过这个难题。
小智 2
与此处的答案相同: https: //serverfault.com/a/676498/277052:如果您有多个 CA,则必须连接所有 CRL。
您必须连接链中的所有 CRL:根 CA 和中间 CA。
使用
openssl crl -in crl_list.crl -noout -text仅读取第一个crl,但nginx正确读取它们并验证用户证书。灵感来源: https: //www.ruby-forum.com/topic/6874370
| 归档时间: |
|
| 查看次数: |
7823 次 |
| 最近记录: |