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