Протокол OCSP позволяет проверить статус SSL сертификата Online. При открытии сайта браузер пытается связаться с OCSP сервером и получить информацию об этом сертификате. Это влияет на скорость работы, так как OCSP сервер может находиться намного дальше, чем сервер, где расположен сайт.
OCSP stapling позволяет веб-серверу прикреплять OCSP-ответы от сервера издателя сертификата. Что положительно сказывается на скорости работы. Ведь браузеру уже не нужно подключаться непосредственно к серверу издателя.
В общем, для включения степлинга на nginx понадобится корневой сертификат издателя. Актуальный корневой сертификат StartSSL его можно скачать здесь: startssl.com/root. При этом, необходимо сначала авторизоваться в личном кабинете.
Но можно скачать и напрямую:
wget https://startssl.com/certs/ca.crt -O /etc/nginx/ssl/ca-startssl.crt
Далее в конфиге сайта с сертификатом от StartSSL (или в глобальном конфигурационном файле сервера, если все сайты имеют сертификат от StartSSL) прописываем параметр, включающий степлинг:
ssl_stapling on;
Затем параметр, указывающий на корневой сертификат, который мы скачали ранее:
ssl_trusted_certificate /etc/nginx/ssl/ca-startssl.crt;
Или даже можем указать путь к корневому сертификату, который поставляется вместе с пакетом openssl:
ssl_trusted_certificate /etc/ssl/certs/StartCom_Certification_Authority.pem;
И, самое главное, — глубина проверки цепочки сертификатов. По-умолчанию этот параметр равен 1.
ssl_verify_depth 3;
У startssl минимальная глубина — 3. Здесь проверяется корневой сертификат, промежуточный сертификат StartCom Class 1 DV Server CA и, непосредственно, сертификат вашего сайта. Без этого степлинг работать не будет.
Также во многих статьях рекомендуется указывать параметр resolver
для определения IP серверов OCSP. Но у меня заработало и без него. Не забываем перезапустить nginx после изменений файлов. ;)
Проверить работу степлинга можно на сайтах: https://www.digicert.com/help/ и https://ssllabs.com.