В конфиге ssl сервера имеется примерно такая конструкция:
ssl_verify_client on;
ssl_client_certificate cacert0.pem;
ssl_verify_depth 1;
Клиент получает сгенерированный и подписанный нами сертификат и ключи и
импортирует это в браузер из pkcs12 формата.
При записи в файл casert0.pem сертификата issuer-а - все работает.
issuer - это вы ?
При наладке заметил странную особенность.
1. Если я указываю глубину верификации 0 (т.е. верифицировать сертификат
клиента) - не работает при добавленном сертификате клиента в файл
casert0.pem.
2. Если я в "файле клиентских сертификатов" оставляю только сертификат
клиента - не работает при любой глубине верификации.
В логе (похоже, в обоих случаях) одинаковая диагностика:
[crit] 11212#0: *39793 SSL_do_handshake() failed (SSL:
error:140890B2:SSL routines:SSL3_GET_CLIENT_CERTIFICATE:no certificate
returned) while reading client request line, client: 1XX.XXX.XXX.XXX,
server: XXX.XXXXXXX.XXX
В cacert0.pem находились self-signed сертификаты ?
Оно так и должно быть, или я что-то не так понял в документации и
невозможно авторизовать отдельно взятого клиента по его собственному
сертификату? Сейчас работает только авторизация клиента по подписавшей
организации. На фоне отсутствия revocation lists - ну, это просто
игрушка. :(
Не совсем игрушка - можно делать revocation на основании $ssl_client_s_dn.
Игорь Сысоев
http://sysoev.ru