====== 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 Если нужно скачать сертификаты 🤷‍♂️ * [[https://support.comodo.com/index.php?/Knowledgebase/Article/View/970/108/intermediate-2-sha-2-comodo-rsa-domain-validation-secure-server-ca|COMODORSADomainValidationSecureServerCA.crt]] * [[https://support.comodo.com/index.php?/Knowledgebase/Article/View/966/108/intermediate-1-sha-2-comodo-rsa-certification-authority|COMODORSAAddTrustCA.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 * [[https://knowledge.digicert.com/solution/SO22631.html| OCSP responds with "Responder Error: unauthorized" when checking an expired certificate]] * [[https://forum.nginx.org/read.php?21,249184,249194#msg-249194|Re: OSCP неавторизованный запрос]] Также рекомендую очень полезную статью - [[https://www.atraining.ru/ocsp-settings-tuning-stapling/|Настройка и оптимизация OCSP]] 🏁 {{tag>nginx ssl comodo}}