ssl crl: Несколько crl

netinsideout nginx-forum на nginx.us
Вс Фев 27 18:05:48 MSK 2011


Доброго времени суток.

Задача такая:
Настроить nginx для использования вместе
с авторизацией по ID-карточке
использующейся в Эстонии.

У нас в Эстонии граждане и жители с
постоянным видом на жительства имеют
ID-карточки. Которые раз в 5 лет меняют.
Вот здесь подробности:
http://en.wikipedia.org/wiki/Estonian_ID_card 
По сути на карточке сертификат, по
которому выполняется проверка. К
браузеру подключается специальный
плагин для этого.

Существует конфиг для nginx который был
написан давно и копируется с одного
форума программистов/сисадминов на
другой:
server {
       listen 443;
       server_name id.domen.ee www.id.domen.ee;
       access_log /usr/home/domen/www/logs/nginx-access-https.log 
main;
       fastcgi_intercept_errors on;
       error_page 495 496 http://www.domen.ee/id/error_ssl;

       ssl on;
       ssl_ciphers 
ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
       ssl_prefer_server_ciphers on;
       ssl_certificate  /usr/home/domen/www/certs/www.domen.ee-CRT.crt;
       ssl_certificate_key
/usr/home/domen/www/certs/www.domen.ee-RSA.pem;
       ssl_client_certificate /usr/home/domen/www/certs/EST-ID.crt;
       ssl_protocols SSLv2 SSLv3 TLSv1;
       ssl_session_cache shared:SSL:10m;
       ssl_session_timeout 10m;
       ssl_verify_client on;
       ssl_verify_depth 2;

       root /usr/home/domen/www/id_data/;
       index index.php index.html index.htm;

       location ~ /\.ht {
         deny all;
       }

       location ~ \.php$ {
         fastcgi_pass unix:/tmp/php-fpm.sock;
         fastcgi_index index.php;
         fastcgi_param SCRIPT_FILENAME 
/usr/home/domen/www/id_data$fastcgi_script_name;
         fastcgi_param X-Client-Verify SUCCESS;
         fastcgi_param X-SSL-Subject $ssl_client_s_dn;
         fastcgi_param X-SSL-Issuer $ssl_client_i_dn;
         fastcgi_param X-SSL-Raw $ssl_client_raw_cert;
         fastcgi_param X-SSL-Serial $ssl_client_serial;

         include /usr/local/etc/nginx/fastcgi.conf;
       }
 }
Этот конфиг работает и почти всё с ним в
порядке. Проблема лишь в том что по
этому конфигу изъятая или утеренная id
карточка с сертификатом проходит
авторизацию. 

Для того чтобы избавиться от этой
проблемы нужно подключить ssl_crl, но как
это сделать не ясно так как сертификата
3 штуки и CRL списка тоже 3.

Вот здесь есть инструкция для Apache: 
http://www.id.ee/?id=10736&&langchange=1 (на эстонском)
Через переводчик:
http://translate.google.ee/translate?js=n&prev=_t&hl=ru&ie=UTF-8&layout=2&eotf=1&sl=et&tl=ru&u=http%3A%2F%2Fwww.id.ee%2F%3Fid%3D10736%26%26langchange%3D1

C сертификатами получилось вот так и
оно работает:

cat JUUR-SK.PEM.cer ESTEID-SK.PEM.cer ESTEID-SK 2007.PEM.cer >
EST-ID.crt

CRL списки обновляются и рекомендуется
обновлять их раз в сутки.

wget http://www.sk.ee/crls/esteid/esteid.crl
wget http://www.sk.ee/crls/esteid/esteid2007.crl  
wget http://www.sk.ee/crls/juur/crl.crl   

конвертация в PEM формат:
openssl crl -in esteid.crl -out esteid.crl -inform DER
openssl crl -in esteid2007.crl -out esteid2007.crl -inform DER
openssl crl -in crl.crl -out crl.crl -inform DER 

Вопрос:
Как поступить? 
1. Собирать все списки в один файл
используя cat? Будет ли так работать? (как
вы понимаете у меня нет изъятой или
утеренной карточки и проверить будет
ли она работать я не могу)
2. Может быть есть возможность указать
не файл, а папку со списками crl, как это
для апача делается через SSLCARevocationPath?

Благодарю заранее за любые советы по
этой проблеме.

Posted at Nginx Forum: http://forum.nginx.org/read.php?21,178821,178821#msg-178821




Подробная информация о списке рассылки nginx-ru