Você precisa usar a diretiva ssl_verify_depth
definida como pelo menos 2
, pois sua cadeia de certificados exige dois saltos. Para cada outra sub-CA entre a raiz e os certificados do cliente, você precisa aumentar esse número em um.
Estou tentando configurar a autenticação de cliente ssl no nginx. Eu criei uma CA raiz auto-assinada. Usando isso, criei uma sub-CA. Eu usei essa sub-CA para criar um certificado para um cliente. Eu concatenei a sub-CA e a CA raiz em um novo arquivo. Eu verifiquei o certificado do cliente da seguinte forma:
$ openssl verify -purpose sslclient -CAfile auth-root.crt testcert.crt
testcert.crt: OK
auth-root.crt é a CA secundária e raiz concatendada; testcert.crt é o certificado do cliente.
Eu apontei o nginx para o auth-root.crt usando ssl_client_certificate
.
Quando faço uma solicitação HTTP usando o certificado testcert.crt, o nginx falha. Liguei os logs de depuração e posso ver o seguinte:
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"
Tags nginx ssl-certificate