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