SSL clientAuth

Andrew Kopeyko kaa at zvuki.ru
Wed Aug 30 16:03:57 MSD 2006


On Wed, 30 Aug 2006, Andrey Y. Ostanovsky wrote:

>> Igor Sysoev wrote:
>>> 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 не делает сертификат рутовым, а проверка
>> должна делаться до рута.

Совершенно правильно понимаешь.

> Тогда было бы неплохо где-то в мануале ( ngx_http_ssl_module.html)
> указать, что в файле сертификатов для авторизации клиента должна лежать
> вся цепочка. И про verify_depth развернуть более подробно, что-то типа:
> 0 - клиентский self signed сертификат
> 1 - клиентский сертификат, выпущенный на основе self signed  CA
> 2 - клиентский сертификат, выпущенный на основе сертификата,
> подписанного третьей стороной (для авторизации требуется наличие всей
> цепочки авторизующих сертификатов).

Вот это неправильное понимание.

verify_depth указывает максимальную длину цепочки сертификатов от 
конечного до корня. Реальная длина цепочки может быть меньше.

Поэтому:

0 - доверять только самоподписанным сертификатам

1 - доверять самоподписанным сертификатам и подписанным доверяемым СА

2 - доверять
     - самоподписанным сертификатам
     - подписанным доверяем СА
     - подписанным подчинённым СА, сертификат которого выпущен доверяемым СА

И так далее...


>Хотя, есть у меня подозрение, что при отсутствии промежуточного
>сертификата - авторизация пройдет. Вечером попробую проверить.

Не должно - проверка цепочки сертификатов остановится на отсутствующем 
сертификате промежуточного CA.


-- 
Best regards,
Andrew Kopeyko <kaa at zvuki.ru>
http://www.zvuki.ru/ sysadmin






More information about the nginx-ru mailing list