Re: Обработка ssl_stapling при недоступности ocsp-респондера

Maxim Dounin mdounin at mdounin.ru
Tue Jun 9 13:52:11 UTC 2015


Hello!

On Tue, Jun 09, 2015 at 02:13:32PM +0600, Eugene Peregudov wrote:

> Добрый день!
> 
> Установлен nginx-frontend, терминирующий ssl\tls с настроенным ssl_stapling:
> 
> # SSL secure session
> ssl_session_timeout  5m;
> ssl_session_cache    shared:SSL:50m;
> 
> # SSL cipher suite settings
> ssl_ciphers
> 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+
> ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
> ssl_prefer_server_ciphers on;
> ssl_dhparam /etc/pki/tls/private/dhparam.pem;
> 
> # OCSP Stapling
> ssl_stapling on;
> ssl_stapling_verify on;
> ssl_trusted_certificate /etc/pki/tls/private/trust-ca-chain-globalsign.pem;
> resolver x.x.x.x;
> 
> Недавно словил глюк (или особенность) работы ssl_stapling.
> 
> В вышеописанной конфигурации nginx должен самостоятельно опрашивать
> ocsp-респондер УЦ (в частности у меня OCSP - URI:
> http://ocsp2.globalsign.com/gsorganizationvalsha2g2) и прикреплять
> ocsp-ответы к tls-сессии (чтобы клиент не тратил время на самостоятельное
> обращение к ocsp-респондеру).
> 
> Однако, при длительной недоступности связи с ocsp-ренспондером некоторые
> внутренние клиенты с браузеров Firefox (и только c них) ловят ошибку
> "OCSP-ответ содержит устаревшую информацию. (Код ошибки:
> sec_error_ocsp_old_response)", что наводит на мысль о том, что возможно
> nginx отдает клиентам устаревший ocsp-ответ (последний сохраненный на
> момент доступности ocsp-респондера УЦ). Если nginx перезапустить, то в
> свежеустановленной tls-сессии ocsp-ответ уже не прикрепляется (OCSP
> response: no response sent) и Firefox ресурс успешно открывает.
> 
> Очевидным решением является конечно же отключение проверки ocsp по
> умолчанию в настройках FF.
> Однако хотелось бы уточнить из первых рук:
> - кеширует ли nginx ocsp-ответы?

Да, и по другому не умеет.

> - если кеширует, то должен ли просто отдавать последний сохраненный у себя
> ocsp-ответ или все же проверять время и не посылать протухший ocsp-ответ?

С теоретической точки зрения - разницы нет.  Браузер так или иначе 
ответ проверит, и если он ему не понравится - может банально 
проигнорировать.  Зачем Firefox поступает иначе (и в RFC 6066 
написано иначе) - тайна сия великая есть, смысла в этом не видно, 
а проблемы очевидны.  У нас есть тикет про это:

http://trac.nginx.org/nginx/ticket/425

И буквально на днях в nginx-devel@ пробегали патчи:

http://mailman.nginx.org/pipermail/nginx-devel/2015-June/007001.html

Если есть желание потестировать - буду благодарен.

-- 
Maxim Dounin
http://nginx.org/



Подробная информация о списке рассылки nginx-ru