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