указать, что в файле сертификатов для авторизации клиента должна лежать
вся цепочка. И про verify_depth развернуть более подробно, что-то типа:
0 - клиентский self signed сертификат
1 - клиентский сертификат, выпущенный на основе self signed CA
2 - клиентский сертификат, выпущенный на основе сертификата,
подписанного третьей стороной (для авторизации требуется наличие всей
цепочки авторизующих сертификатов).
Тогда было бы неплохо где-то в мануале ( ngx_http_ssl_module.html)
Вот это неправильное понимание.
Очевидно, оно проистекает из неправильных объяснений? :)
Возможно :)
verify_depth указывает максимальную длину цепочки сертификатов от
конечного до корня. Реальная длина цепочки может быть меньше.
Поэтому:
0 - доверять только самоподписанным сертификатам
1 - доверять самоподписанным сертификатам и подписанным доверяемым СА
2 - доверять
- самоподписанным сертификатам
- подписанным доверяем СА
- подписанным подчинённым СА, сертификат которого выпущен
доверяемым СА
Вот отсюда путаница и начинается. Я "доверяю этому CA" когда делаю
-addtrust ... - и, в результате, ничего не работает. А вот если мы
говорим о "корневом CA" вместо "доверяемым CA" - тогда все встает на
свои места. 0 (self signed) - сам себе корневой CA, так что, он тоже
умещается в эту схему.
Спасибо, Андрей, за поправку - должно быть "доверяемым корневым СА"
Цепочка сертификатов должна быть построена до корня.
Проверка цепочки заканчивается на сертификате корневого CA.
Если этот сертификат входит в список доверяемых - мы автоматически
доверяем и всем подчинённым ему сертификатам, конечным и промежуточным CA.
Решение о доверии может быть принято и ранее - если выдавший конечный
сертификат промежуточный CA внесён в наш список доверяемых.