SSL客户端证书验证在nginx中失败


11

我正在尝试在Nginx中设置ssl客户端身份验证。我创建了一个自签名的根CA。使用它,我创建了一个子CA。我使用此子CA为客户端创建证书。我将子CA和根CA串联到一个新文件中。我验证了客户端证书,如下所示:

$ openssl verify -purpose sslclient -CAfile auth-root.crt testcert.crt
testcert.crt: OK

auth-root.crt是相连的子CA和根CA。testcert.crt是客户端证书。

我使用将nginx指向auth-root.crt ssl_client_certificate

当我使用testcert.crt证书发出HTTP请求时,nginx失败。我打开了调试日志,可以看到以下内容:

2012/06/21 22:58:47 [debug] 8901#0: *2 verify:0, error:2, depth:1, subject:"/C=US/ST=Florida/L=Tampa/O=Test org/OU=Test OU/CN=AuthCerts TestCA",issuer: "/C=US/ST=Florida/L=tampa/O=Test org/OU=Test OU/CN=Root TestCA"
2012/06/21 22:58:47 [debug] 8901#0: *2 verify:0, error:27, depth:1, subject:"/C=US/ST=Florida/L=Tampa/O=Test org/OU=Test OU/CN=AuthCerts TestCA",issuer: "/C=US/ST=Florida/L=tampa/O=Test org/OU=Test OU/CN=Root TestCA"
2012/06/21 22:58:47 [debug] 8901#0: *2 verify:1, error:27, depth:0, subject:"/C=US/ST=Florida/L=Tampa/O=Accelerated Concepts/OU=NetBridge/CN=030202",issuer: "/C=US/ST=Florida/L=Tampa/O=Test org/OU=Test OU/CN=AuthCerts TestCA"

Answers:


13

由于证书链需要两跳ssl_verify_depth,因此至少需要使用设置为的指令2。对于根证书和客户端证书之间的其他子CA,您需要将该数字增加一。


2
感谢您分享解决方案。如果有机会,您可能希望将自己的答案标记为正确。
Pothi Kalimuthu 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.