nginx代理+ ssl + clr“400错误请求”错误

这里有一个情况 – 有一个处理SSL证书的nginx代理,在我们决定添加一个撤销列表pipe理之前,这个代理是安全的。 这是当“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; } 

每当用户尝试使用SSL进行身份validation时,服务器将始终提供“400错误请求”错误。 请注意,完全相似(不同,因为语法)configuration在Apache中完美工作。 现在证书是完美无瑕的,这已经被多次certificate了,例如validation检查

 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 

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" 

这基本上是唯一的错误,正如我前面所述,相同的证书与Apache的工作。 我认为这可能是一个错误,但类似错误的最后通知是2011年,所以我怀疑没有人解决了这个难题。

同样的答案在这里: https : //serverfault.com/a/676498/277052 :如果你有多个CA你必须连接所有的CRLs。

您必须连接链中的所有CRL:根CA和中间CA.

使用openssl crl -in crl_list.crl -noout -text只读取第一个crl,但是nginx正确读取它们并validation用户证书。

启发: https : //www.ruby-forum.com/topic/6874370

nginx进程是否可以读取该crl? 它也是在正确的pem格式,并由一个相同的ca作为root crt签名?

例:

 $ openssl crl -text -noout -in personlist.crl 

参考: http : //www.apacheweek.com/features/crl