Hello! On Tue, Jun 27, 2017 at 07:18:57AM -0400, 2D77rus wrote:
> Здравствуйте, коллеги. > > Никак не могу побороть авторизацию по сертификатам, получаю ошибку "client > SSL certificate verify error: (3:unable to get certificate CRL)". Этот и > другие форумы пересмотрел, всё не то. > > Конфиг: > ================== > ssl on; > ssl_certificate /etc/pki/tls/certs/mail2.local.cer; > ssl_certificate_key /etc/pki/tls/private/private.key; > ssl_session_timeout 5m; > ssl_protocols SSLv2 SSLv3 TLSv1; > ssl_ciphers HIGH:!aNULL:!MD5; > ssl_prefer_server_ciphers on; > > ssl_trusted_certificate /etc/pki/tls/certs/chain.cer; # сертификаты > CA1 и CA0 > ssl_client_certificate /etc/pki/tls/certs/ca1.cer; # только > сертификат CA1 > ssl_crl /etc/pki/tls/certs/ca1.crl; # только CRL от CA1 > ssl_verify_client on; > ssl_verify_depth 1; > ================== > Сертификаты, CRL - всё живое: > > openssl crl -CAfile CA1.cer -in CA1.crl > verify OK > > openssl verify -CAfile CA0.cer CA1.cer > verify OK > > openssl verify -CAfile chain.cer client1.cer > verify OK > > - и всё равно неизменно ошибка. > > Если убрать параметр ssl_crl, получаю "client SSL certificate verify error: > (27:certificate not trusted)" > > CA0 - корневой ЦС, CA1 - промежуточный ЦС, который выдал сертификат клиенту > (виндовый, AD 2012). > Сертификаты CA0 и CA1 добавлены в доверенные на сервере. > CentOS 6.8, nginx/1.8.1, OpenSSL 1.0.1e-fips > SMTP и IMAP на этом же сервере с тем же набором сертификатов - клиенты по > сертификатам прекрасно авторизуются. > > Куда ещё копнуть, подскажите? Спасибо. Во-первых, "ssl_verify_depth 1" при использовании промежуточного CA не годится, т.к. ssl_verify_depth ограничивает глубину проверки до корневого CA. Соответственно значение 1 означает, что предъявленный клиентом сертификат должен быть подписан непосредственно корневым CA. В случае использования промежуточных CA - нужно выставить ssl_verify_depth 2 и более. Во-вторых, для работы ssl_crl необходимо, чтобы списки отзыва были для всех используемых CA. Если для какого-то из сертификатов списков отзыва в указанном CRL-файле не будет, то ошибка "unable to get certificate CRL" - ожидаема. В openssl verify соответствующий ключ называется -crl_check_all". -- Maxim Dounin http://nginx.org/ _______________________________________________ nginx-ru mailing list [email protected] http://mailman.nginx.org/mailman/listinfo/nginx-ru
