OCSP stapling в Nginx
В этом посте будет слишком много 🙉 вероятно это раздражает, но ничего не поделаешь 🙊 Провожу тайный эксперимент в Dokuwiki 🙈
В примере будет сертификат Sectigo (Comodo) 🔒
Сначала нужно собрать цепочку сертификатов (CA Bundle) ⛓
$ cat foobar_com.crt foobar_com.ca-bundle > ssl_bundle.crt
В зависимосте от типа сертификата в архиве могут быть другие файлы:
- AddTrustExternalCARoot.crt / Root CA Certificate / Корневой сертификат
- COMODORSAAddTrustCA.crt / Intermediate CA Certificate / Промежуточный сертификат
- COMODORSADomainValidationSecureServerCA.crt / Intermediate CA Certificate
- foobar_com.crt - Сертификат домена
В этом случае команда выглядит так
$ cat foobar_com.crt COMODORSADomainValidationSecureServerCA.crt COMODORSAAddTrustCA.crt AddTrustExternalCARoot.crt > ssl_bundle.crt
Да, так советует делать инструкция от Comodo. Но в таком случае на SSLLabs будет предупреждение Chain issues - Contains anchor. Поэтому AddTrustExternalCARoot.crt
нужно исключить 🤯 и правильная команда выглядит так
$ cat foobar_com.crt COMODORSADomainValidationSecureServerCA.crt COMODORSAAddTrustCA.crt > ssl_bundle.crt
Далее нам нужен файл, содержащий сертификаты (корневой+промежуточный) для проверки ответов OCSP
$ cat COMODORSADomainValidationSecureServerCA.crt COMODORSAAddTrustCA.crt > foobar_com_ocsp.crt
Если нужно скачать сертификаты 🤷♂️
Пример конфигурационного файла для OCSP stapling
server { listen 443 ssl; server_name foobar.com; ssl_certificate /etc/ssl/foobar_com.crt; ssl_certificate_key /etc/ssl/foobar_com.key; ssl_trusted_certificate /etc/ssl/foobar_com_ocsp.crt ssl_stapling on; ssl_stapling_verify on; resolver 1.1.1.1 8.8.8.8 valid=300s ipv6=off; resolver_timeout 5s; }
Слишком маленькое значение resolver_timeout (менее 5 секунд) может вызвать ошибку 🧙
"ssl_stapling" ignored, host not found in OCSP responder "ocsp.comodoca.com"
Если настроен фаервол, то не забудьте разрешить вашему серверу исходящие соединения к OCSP URL.
Узнаем OCSP URL
$ openssl x509 -in /etc/ssl/foobar_com.crt -noout -ocsp_uri http://ocsp.comodoca.com
Адрес OCSP сервера - http://ocsp.comodoca.com
Раз уж теперь известен OCSP сервер, то можно провести тест через консоль с openssl.
$ openssl ocsp -issuer intermediate.crt -cert foobar_com.crt -url http://ocsp.comodoca.com -no_nonce
Успешный вывод команды выглядит так
Response verify OK /etc/ssl/foobar_com.crt: good This Update: Apr 29 04:51:34 2020 GMT Next Update: May 6 04:51:34 2020 GMT
Если вдруг Responder Error: unauthorized, то читаем RFC5019
Также рекомендую очень полезную статью - Настройка и оптимизация OCSP
🏁
Обсуждение