====== 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}}