nginx에서 SSL 클라이언트 인증을 설정하려고합니다. 자체 서명 된 루트 CA를 작성했습니다. 이를 사용하여 하위 CA를 만들었습니다. 이 하위 CA를 사용하여 클라이언트에 대한 인증서를 만들었습니다. 하위 CA와 루트 CA를 새 파일로 연결했습니다. 클라이언트 인증서를 다음과 같이 확인했습니다.
$ openssl verify -purpose sslclient -CAfile auth-root.crt testcert.crt
testcert.crt: OK
auth-root.crt는 연결된 하위 및 루트 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"
답변
인증서 체인에 두 개의 홉이 필요하므로 ssl_verify_depth
최소한 지시문 을 사용해야합니다 2
. 루트와 클라이언트 인증서 사이의 서로 다른 하위 CA의 경우 해당 수를 하나씩 증가시켜야합니다.