SSL clientAuth

Igor Sysoev is at rambler-co.ru
Wed Aug 30 10:03:10 MSD 2006


On Mon, 28 Aug 2006, Andrey Y. Ostanovsky wrote:

> Опять я со своим непорочным... Тьфу! С авторизацией юзера по 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.
>
> Это я что-то не так делаю, или где-то ошибка в коде?

Насколько я понимаю, -addtrust не делает сертификат рутовым, а проверка
должна делаться до рута.


Игорь Сысоев
http://sysoev.ru





More information about the nginx-ru mailing list