Как проверить несколько списков CRL с помощью аутентификации клиента nginx?
У меня есть пользовательская установка easyrsa с рутом и тремя CA, подписанными рутом. (Три разных подпрограммы в зависимости от типа пользователя), например:
RootCA
+----- AdminUserCA
+----- EmployeeCA
+----- ClientCA
У меня есть аутентификация, работающая со следующим конфигом:
server {
listen 127.0.0.1:443;
server_name www.acme.corp;
ssl on;
ssl_certificate /data/src/easy-rsa/bundles/www.acme.corp_bundle.crt;
ssl_certificate_key /data/src/easy-rsa/whfWebCA/pki/private/www.acme.corp.key;
add_header Strict-Transport-Security "max-age=315360000; includeSubdomains";
ssl_protocols SSLv3 TLSv1;
ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-RC4-SHA:ECDHE-RSA-RC4-SHA:ECDH-ECDSA-RC4-SHA:ECDH-RSA-RC4-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:RC4-SHA;
ssl_prefer_server_ciphers on;
ssl_verify_client optional;
ssl_client_certificate /data/src/easy-rsa/bundles/client_auth_ca_chain.crt;
ssl_verify_depth 2;
ssl_crl /data/src/easy-rsa/bundles/crls/all.pem;
...
}
Проблема с проверкой CRL. Списки отзыва сертификатов подписываются выдающим центром сертификации, поэтому их нельзя добавлять вместе, как промежуточный сертификат + корневые сертификаты.
Таким образом, сертификат пользователя будет выдан данным промежуточным ЦС в зависимости от их типа пользователя. Проблема в том, что мне действительно нужно проверить четыре списка CRL, чтобы быть эффективными. Nginx ssl_crl
поддерживает только один файл.
Итак, мой вопрос: возможно ли, чтобы nginx правильно проверял аннулирование сертификата клиента в этой настройке, не выполняя проверку в моем приложении?
2 ответа
Да, это возможно. Просто объедините несколько кодов CRL в PEM в один файл, указанный в ssl_crl
директивы.
(Вопрос в списке рассылки nginx ссылался на этот вопрос. Здесь также можно опубликовать ответ.)
Вы должны объединить все CRL в цепочке: корневой CA и промежуточный CA.
С помощью openssl crl -in crl_list.crl -noout -text
только читать первый crl, но nginx читает их правильно и проверяет сертификат пользователя.
Вдохновлен: https://www.ruby-forum.com/topic/6874370