SSL clientAuth
Andrey Y. Ostanovsky
andrey at ostanovsky.spb.ru
Mon Aug 28 23:51:27 MSD 2006
Hello, All!
Опять я со своим непорочным... Тьфу! С авторизацией юзера по SSL
сертификату.
Итак, имеется selfsigned "корневой" сертификат организации. Если мы им
подписываем сертификат сотрудника и помещаем сертификат в
соответствующую директорию nginx - все работает замечательно. Теперь
хочется, чтобы, например, начальник отдела, имея "сертификат отдела",
подписанный "корневым сертификатом организации", мог сам подписывать
ключи своим сотрудникам. Вроде бы не слишком нахальное желание?:)
Делаем, генерим, подписываем, отдаем сертификат клиенту.
Теперь, если мы в файле ssl_client_certificate оставляем только один
сертификат отдела - авторизация с ssl_verify_depth=1 не проходит с
диагностикой:
client SSL certificate verify error: (27:certificate not trusted)
Из man verify извлекаем ценное знание:
27 X509_V_ERR_CERT_UNTRUSTED: certificate not trusted
the root CA is not marked as trusted for the specified purpose.
Маркируем имеющийся сертификат отдела как trusted:
openssl x509 -in department.pem -addtrust clientAuth -addtrust
serverAuth > cacert.pem
Смотрим на результат:
# openssl x509 -noout -text -in cacert.pem
.....
Trusted Uses:
TLS Web Client Authentication, TLS Web Server Authentication
No Rejected Uses.
Вроде бы, все должно работать? Ан, нет.
Пока не изменишь ssl_verify_depth на "2" и не добавишь в cacert.pem
сертификат организации - в логе абсолютно та же самая ругань на
untrusted certificate.
Это я что-то не так делаю, или где-то ошибка в коде?
--
Best regards, Andrey
St.Petersburg
More information about the nginx-ru
mailing list