Re: Странное поведение OCSP Stapling и параметров ssl
Maxim Dounin
mdounin на mdounin.ru
Вс Авг 21 19:32:19 UTC 2016
Hello!
On Sat, Aug 20, 2016 at 04:29:44AM -0400, VVL wrote:
> Доброе утро! Ситуация следующая:
> Имеем: в основном конфигурационном сайте - nginx.conf включен OCSP
> следующими параметрами:
> ssl_stapling on;
> ssl_stapling_verify on;
> resolver 8.8.8.8 8.8.4.4 valid=300s;
> В виртуальном хосте дополнительно прописан stapling_file:
> ssl_stapling_file ...l/ocsp.der;
> Который не работает. Т.е. если создать искуственно долгий (или превышающий
> лимит) ответ от resolver-а, и проверять работу OCSP например командой
> openssl s_client -connect example.com:443 -status 2> /dev/null | grep -A 17
> 'OCSP response:' | grep -B 17 'Next Update'
> ,то он отрабатывает через раз (или реже, в зависимости от условий). Сначала
> было подозрение на http2/round robin, но их отключение результата не дало.
> При переносе ssl_stapling_file в основной конфигурационный файл, все
> заработало - OCSP отрабатывает каждый раз, даже если поставить заведомо
> нерабочий resolver.
В приведённой команде "openssl s_client" вы проверяете OCSP
stapling для сервера по умолчанию на данном IP, без использования
SNI (задаётся с помощью параметра "-servername"). А
конфигурируете его - в виртуальном сервере. От этого и не
работает.
Под переносом в основной конфигурационный файл, видимо, имеется в
виду указание соответствующей директивы на уровне http{}. В этом
случае значение наследуется во все блоки server{}, и
соответственно будет также использоваться в сервере по умолчанию,
если не переопределно там явно.
> Дальше, путем эксперимента было установлено, что такое
> поведение у многих параметров ssl_. Является ли это нормой, что эти
> параметры работают только в основном конфигурационном файле? А если нужны
> разные ssl_stapling_file для хостов?
Многие настройки SSL работают до обработки SNI, и, соответственно,
имеют смысл только сервере по умолчанию даже в случае
использования SNI. E.g., разные ssl_protocols для разных
виртуальных сервреров - задать не получится.
Однако в ssl_stapling_file это не относится, см. выше.
> Немного оффтопа:
> При генерации ocsp файла командой
> openssl ocsp -issuer sca.server2.crt -cert example.com.crt -url
> http://ocsp.startssl.com -header "Host" "ocsp.startssl.com" -respout
> ocsp.der -resp_text
> (сертификаты StartSSL), и последующей проверке >любого< сертификата этого
> CA, ocsp.der выдает good (нет возможности проверить отозванный). Разве он не
> должен записать статус только example.com.crt? Вес файла ~2кб.
Не совсем понятно, что означают слова "последующая проверка любого
сертификата". В файле ocsp.der после выполнения команды выше у
вас будет OCSP-ответ про конкретный сертификат, для других
сертификатов этот ответ не годится. Если вы его дальше пытаетесь
подсунуть браузерам с помощью ssl_stapling_file вместе вместе с
другим сертификатом - в зависимости от браузера он будет либо
проигнорирован, либо приведён к ошибке соединения.
--
Maxim Dounin
http://nginx.org/
Подробная информация о списке рассылки nginx-ru