OCSP stapling для nginx

OCSP - (Online Certificate Status Protocol) протокол для проверки валидности SSL сертификата, т.е. отозван он или нет. Был создан как альтернатива CRL для уменьшения времени SSL соединения. При работе по протоколу CRL (Certificate Revocation List) браузер загружает список серийных номеров отозванных сертификатов и проверяет текущий. При работе по протоколу OCSP браузер отправляет запрос по OCSP URL сертификата и получает ответ, содержащий статус сертификата. При этом, если сайт имеет большое число посетителей, то сервер CA будет вынужден обрабатывать большое кол-во обращений от браузеров пользователей, что будет увеличивать время загрузки страниц.
Для уменьшения времени на установку SSL соединения существует технология OCSP stapling, по которой владелец сертификата (веб сервер) посылает запрос на OCSP сервер самостоятельно и кеширует его ответ. Этот ответ "прикрепляется" к TLS/SSL Handshake с помощью запроса Certificate Status Request extension, в результате чего CA сервер не добавляет задержку ко времени установки SSL соединения.
Чтобы настроить OCSP stapling в nginx необходимо поместить сертификат корневого CA и все промежуточные сертификаты из цепочки( в формате pem) в один файл и отредактировать конфиг nginx.
Чтобы узнать корневой СА и цепочку промежуточных для сертификатов, можно, например, выполнить команду

# openssl s_client -connect mysite.com:443 -showcerts
...
CONNECTED(00000003)
depth=3 C = IL, O = StartCom Ltd., OU = Secure Digital Certificate Signing, CN = StartCom Certification Authority
verify return:1
depth=2 C = CN, O = WoSign CA Limited, CN = Certification Authority of WoSign
verify return:1
depth=1 C = CN, O = WoSign CA Limited, CN = WoSign CA Free SSL Certificate G2
verify return:1
depth=0 CN = mysite.com
verify return:1
.....

или открыть свойства сертификата для сайта в браузере, например в FF и взять оттуда URI сертификатов.
Информацию об URI для корневого СА взял отсюда же и получились, в моем случае, следующие URI:
Согласно http://www.startssl.com/policy.pdf из свойств сертификата
http://www.startssl.com/certs/ca.pem - корневой СА
http://aia.startssl.com/certs/ca.crt
http://aia1.wosign.com/ca1g2-server1-free.cer
http://aia6.wosign.com/ca6.server1.free.cer
Все нужно загрузить и (кроме первого) преобразовать в формат pem, например, командой
cat file.cer | openssl x509 -inform DER -outform PEM > file.pem
после чего поместить последовательно все полученные сертификаты в один файл, например, ca-certs.pem.
После этого нужно добавить в конфиг nginx для виртуалхоста строки в
server {
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/ssl/nginx/wosign/ocsp/ca-certs.pem;

и перезапустить nginx.
Дополнительно можно добавить в конфиг
add_header Strict-Transport-Security "max-age=2592000;";
что скажет браузерам о том сколько времени хранить информацию о сертификате.
Проверка правильности настройки:
https://www.ssllabs.com/ssltest/index.html
или
echo QUIT | openssl s_client -connect mysite.com:443 -status
смотреть в выводе OCSP Responce Data, должно быть
Cert Status: good
или
echo QUIT | openssl s_client -connect mysite.com:443 -status 2> /dev/null | grep -A 20 'OCSP response:' | grep -B 20 'Next Update'

Полезная информация
http://habrahabr.ru/post/254231/
http://habrahabr.ru/post/252821/
https://www.digitalocean.com/community/tutorials/how-to-configure-ocsp-s...

Отправить комментарий

CAPTCHA
Чтобы убедиться в том что Вы не робот, ответьте, пожалуйста, на вопрос
Fill in the blank