OCSP stapling in Nginx >=1.3.7
Maxim Dounin
mdounin на mdounin.ru
Пн Сен 10 13:04:19 UTC 2018
Hello!
On Thu, Sep 06, 2018 at 06:26:25PM +0300, Gena Makhomed wrote:
> Здравствуйте, All!
>
> Если с помощью Let's Encrypt сделать SSL-сертификат
> для домена,например, example.com то в файле
> /etc/letsencrypt/live/example.com/README
> будет такая информация:
>
> `chain.pem` : used for OCSP stapling in Nginx >=1.3.7.
>
> Чтобы nginx использовал файл chain.pem для OCSP stapling
> необходимо прописать в конфиге
>
> ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
> ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
> ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
>
> ssl_stapling on;
> ssl_stapling_verify on;
> resolver 8.8.8.8 1.1.1.1 9.9.9.9 ipv6=off;
>
> я правильно понимаю?
Just a side note: использование сторонних DNS-серверов - это
плохое решение. Цитируя документацию:
: Для предотвращения DNS-спуфинга рекомендуется использовать
: DNS-серверы в защищённой доверенной локальной сети.
> Смущает тот факт, что если закомментировать
> в конфиге директиву ssl_trusted_certificate
> - никаких предупреждений не выводится во время
> тестирования конфигурации и никаких сообщений
> не пишется в лог во время systemctl reload nginx
Верификация OCSP-ответов - происходит только в момент собственно
получения этих ответов. Соответственно каких-либо ошибок в логе
стоит ожидать только после того, как к соответствующему server'у
будет установлено первое соединение с запросом stapling'а.
Кроме того, в некоторых случаях для проверки может хватить
сертификатов, уже присутствующих в цепочке сертификата (по идее
должно хватать issuer cert, которые есть в цепочке почти всегда,
но, к сожалению, соответствующие функции в OpenSSL, cкажем так,
оставляют желать - и это, собственно, основная причина, почему
ssl_stapling_verify не используется по умолчанию).
> Насколько я понимаю, ssl_stapling_verify on
> следует включать всегда, потому что общение
> с OCSP сервером происходит по протоколу HTTP?
> По крайней мере, в самом сертификате написано:
> OCSP: URI: http://ocsp.int-x3.letsencrypt.org
Да, общение с OCSP-сервером происходит по HTTP. Но на самом деле
это мало влияет на то, следует ли использовать ssl_stapling_verify
или нет - самому nginx'у всё равно, что написано в OCSP-ответе.
Вопрос в первую очередь в поведении браузеров.
Когда я последний углублялся в тему - Firefox остро реагировал на
некорректные OCSP-ответы в стаплинге, не пытаясь самостоятельно
перезапросить OCSP-ответ с OCSP-сервера, и это естественным
образом приводило к тому, что подсунув серверу некорректный
OCSP-ответ - можно было выключить его для всех пользователей
Firefox'а[1]. Что, впрочем, не мешало Apache не иметь даже
возможности для верификации OCSP-ответов. Не в курсе, изменилось
ли с тех пор что-нибудь.
[1] https://trac.nginx.org/nginx/ticket/425#comment:2
--
Maxim Dounin
http://mdounin.ru/
Подробная информация о списке рассылки nginx-ru