NGINX + SSL = POWER! используемые сервера: 5.9.109.104 / 192.168.10.13 (kolibri) 5.9.109.105 / 192.168.10.1 (gateway) (он же https://enter.taxiwest.ru) Для удобства, будем их называть бакэнд (kolibri) и фронтэнд (gateway).+ **BACKEND** ''5.9.109.104 / 192.168.10.13 (kolibri)'' Этот сервер используется для генерации и подписи клиентских сертификатов. Все скрипты и сертификаты лежат в ''/etc/nginx/ssl'' // Описание файлов.// ''ca.config'' - конфиг для **OpenSSL** ''ca.crt'' - самоподписанный сертификат. Необходим для подписи клиентских сертификатов. **''certgen_cl.sh''** - скрипт для генерации и подписи клиентских запароленых сертификатов. Использование: Usage: ./certgen_cl.sh keyname city unit name e-mail password После его использование - в директории ''/etc/nginx/ssl'' появился три файла с расширениями ''.key .crt .p12'' ''%certname.p12%'' - это и есть **PKCS#12**-сертификат, который необходимо скормить браузеру пользователя. ''**revoke.sh**'' - скрипт для отзыва клиентских сертификатов. Кушает в качестве аргумента имя ключа. К примеру, если у нас есть файл сертификата ''cert1.p12'' то для его отзыва нужно запустить ''revoke.sh cert1'' **ВАЖНО:** при отзыве сертификата - нужно скопировать crl.pem (список отозванных сертификатов) на фронтэнд и релоднуть nginx (service nging reload), иначе - фронтэнд будет "проксировать" на бакэнд клиентов с "отозванными" сертификатами. ''server.csr'' - сертификат для **NGINX** ''server.crt'' - подписанный сертификат для **NGINX** ''server.nopass.key'' - беспарольная копия сертификата для **NGINX** ''crl.pem'' - Certificate Revocation List - список отзыва сертификатов. В нем перечисляются все отозванные клиентские сертификаты. **FRONTEND** ''5.9.109.105 / 192.168.10.1 (gateway)'' Этот сервер используется для авторизации клиента и проверки клиентского сертификата на действительность и подпись. Он используется как прокси сервер для работы с бакэндом. Если посмотреть на нем конфиг nginx'а - то можно вдуплить что к чему: server { listen *:443; server_name enter.taxiwest.ru; ssl_certificate /etc/nginx/ssl/server.crt; ssl_certificate_key /etc/nginx/ssl/server.nopass.key; ssl_client_certificate /etc/nginx/ssl/ca.crt; ssl_verify_client on; ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers HIGH:!aNULL:!MD5; ssl_crl /etc/nginx/ssl/crl.pem; ssl on; location / { proxy_pass http://192.168.10.13/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } access_log /var/log/nginx/enter.taxiwest.ru/enter.taxiwest.ru.access.log; error_log /var/log/nginx/enter.taxiwest.ru/enter.taxiwest.ru.error.log error; root /var/www; charset cp1251; index index.php; rewrite_log on; autoindex off; client_max_body_size 100m; keepalive_timeout 70; fastcgi_param SSL_VERIFIED $ssl_client_verify; fastcgi_param SSL_CLIENT_SERIAL $ssl_client_serial; fastcgi_param SSL_CLIENT_CERT $ssl_client_cert; fastcgi_param SSL_DN $ssl_client_s_dn; } Nginx использует для проверки подписи клиентских сертификатов файл ca.crt, server.crt и server.nopass.key /etc/nginx/ssl/crl.pem - используется для проверки сертификата на валидность. Следовательно, если клиент будет стучаться на фронтэнд с отозванным сертификатом - энджик его дропнет.