Проверка подлинности ssl клиента не удалась в nginx

10

Я пытаюсь настроить аутентификацию клиента ssl в nginx. Я создал самозаверяющий корневой CA. Используя это, я создал суб-CA. Я использовал этот суб-CA для создания сертификата для клиента. Я объединил суб-CA и корневой CA в новый файл. Я проверил сертификат клиента следующим образом:

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

auth-root.crt - конкатенированный sub и root CA; testcert.crt - это сертификат клиента.

Я указал nginx на auth-root.crt, используя ssl_client_certificate.

Когда я делаю HTTP-запрос, используя сертификат testcert.crt, 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"
Шон Дж. Гофф
источник

Ответы:

13

Вы должны использовать ssl_verify_depthдирективу по крайней мере, 2так как ваша цепочка сертификатов требует двух прыжков. Для каждого другого под-CA между корневым и клиентским сертификатами вам нужно увеличить это число на единицу.

Шон Дж. Гофф
источник
2
Спасибо, что поделились решением. Вы можете пометить свой собственный ответ как правильный, когда у вас есть шанс.
Поти Калимуту