Вступление
Сшивание OCSP - это расширение TLS / SSL, целью которого является повышение производительности согласования SSL при сохранении конфиденциальности посетителей. Прежде чем приступить к настройке, кратко опишем, как работает отзыв сертификата. В этой статье используются free сертификаты, выпущенные StartSSL для демонстрации.
Этот учебник будет использовать базовую конфигурацию для Apache и Nginx, описанную ниже:
О OCSP
OCSP (Online Status Certificate Status Protocol) - это протокол для проверки того, был ли SSL сертификат отозван. Он был создан как альтернатива CRL для сокращения времени согласования SSL. С помощью CRL (списка отзыва сертификатов) браузер загружает список серийных номеров отозванного сертификата и проверяет текущий сертификат, что увеличивает время согласования SSL. В OCSP браузер отправляет запрос на URL OCSP и получает ответ, содержащий статус достоверности сертификата. На следующем снимке экрана показан URI OCSP digitalocean.com.
изображение: https: //assets.digitalocean.com/articles/OCSP_Stapling/1.png [URI OCSP]
О сшивании OCSP
У OCSP есть две основные проблемы: конфиденциальность и большая нагрузка на серверы CA.
Поскольку OCSP требует, чтобы браузер связался с ЦС для подтверждения действительности сертификата, это ставит под угрозу конфиденциальность. CA знает, к какому веб-сайту обращаются и кто к нему обращался.
Если веб-сайт HTTPS получает много посетителей, сервер CA OCSP должен обрабатывать все запросы OCSP, сделанные посетителями.
При реализации сшивания OCSP владелец сертификата (для чтения веб-сервера) запрашивает сервер OCSP и кэширует ответ. Этот ответ «сшивается» с помощью рукопожатия TLS / SSL через ответ расширения * Certificate Status Request *. В результате серверы CA не обременены запросами, и браузерам больше не нужно раскрывать привычки пользователей в просмотре третьим лицам.
Проверьте поддержку сшивания OCSP
Сшивание OCSP поддерживается на
-
HTTP-сервер Apache (> = 2.3.3)
-
Nginx (> = 1.3.7)
Пожалуйста, проверьте версию вашей установки с помощью следующих команд, прежде чем продолжить.
Apache:
apache2 -v
Nginx:
nginx -v
Пользователи CentOS / Fedora заменяют + apache2 +
на + httpd +
.
Получить пакет CA
Извлеките корневой сертификат CA и промежуточный сертификат CA в формате PEM и сохраните их в одном файле. Это для сертификатов Root и Intermediate CA StartSSL.
cd /etc/ssl
wget -O - https://www.startssl.com/certs/ca.pem https://www.startssl.com/certs/sub.class1.server.ca.pem | tee -a ca-certs.pem> /dev/null
Если ваш ЦС предоставляет сертификаты в формате DER, преобразуйте их в PEM. Например, DigiCert предоставляет сертификаты в формате DER. Чтобы загрузить их и преобразовать в PEM, используйте следующие команды:
cd /etc/ssl
wget -O - https://www.digicert.com/CACerts/DigiCertHighAssuranceEVRootCA.crt | openssl x509 -inform DER -outform PEM | tee -a ca-certs.pem> /dev/null
wget -O - https://www.digicert.com/CACerts/DigiCertHighAssuranceEVCA-1.crt | openssl x509 -inform DER -outform PEM | tee -a ca-certs.pem> /dev/null
Оба набора команд используют + tee +
для записи в файл, поэтому вы можете использовать + sudo tee +
, если вы вошли в систему как пользователь без полномочий root.
Настройка сшивания OCSP на Apache
Отредактируйте файл виртуальных хостов SSL и поместите эти строки * внутри * директивы + <VirtualHost> </ VirtualHost> +
.
sudo nano /etc/apache2/sites-enabled/example.com-ssl.conf
SSLCACertificateFile /etc/ssl/ca-certs.pem
SSLUseStapling on
Расположение кэша должно быть указано * за пределами * + <VirtualHost> </ VirtualHost> +
.
sudo nano /etc/apache2/sites-enabled/example.com-ssl.conf
SSLStaplingCache shmcb:/tmp/stapling_cache(128000)
Если вы следовали this article для настройки сайтов SSL на Apache, файл виртуального хоста будет выглядеть так:
+ / и т.д. / apache2 / сайты с поддержкой / example.com-ssl.conf +
<IfModule mod_ssl.c>
SSLStaplingCache shmcb:/tmp/stapling_cache(128000)
<VirtualHost *:443>
ServerAdmin webmaster@localhost
ServerName example.com
DocumentRoot /var/www
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/example.com/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/example.com/apache.key
SSLCACertificateFile /etc/ssl/ca-certs.pem
SSLUseStapling on
</VirtualHost>
</IfModule>
Выполните + configtest +
, чтобы проверить наличие ошибок.
apachectl -t
Перезагрузите, если + Синтаксис OK +
отображается.
service apache2 reload
Зайдите на веб-сайт в IE (в Vista и выше) или Firefox 26+ и проверьте журнал ошибок.
tail /var/log/apache2/error.log
Если файл, определенный в директиве + SSLCACertificateFile +
, отсутствует, в сертификате отображается ошибка, подобная следующей.
[Fri May 09 23:36:44.055900 2014] [ssl:error] [pid 1491:tid 139921007208320] AH02217: ssl_stapling_init_cert: Can't retrieve issuer certificate!
[Fri May 09 23:36:44.056018 2014] [ssl:error] [pid 1491:tid 139921007208320] AH02235: Unable to configure server certificate for stapling
Если такие ошибки не отображаются, переходите к последнему шагу.
Настройка сшивания OCSP на Nginx
Отредактируйте файл виртуальных хостов SSL и поместите следующие директивы в раздел + server {} +
.
sudo nano /etc/nginx/sites-enabled/example.com.ssl
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/ssl/private/ca-certs.pem;
Если вы следовали this article для настройки SSL-хостов на Nginx полный файл виртуального хоста будет выглядеть так:
+ / И т.д. / Nginx / сайты с поддержкой / example.com.ssl +
server {
listen 443;
server_name example.org;
root /usr/share/nginx/www;
index index.html index.htm;
ssl on;
ssl_certificate /etc/nginx/ssl/example.org/server.crt;
ssl_certificate_key /etc/nginx/ssl/example.org/server.key;
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/ssl/private/ca-certs.pem;
}
Выполните + configtest +
, чтобы увидеть, все ли правильно.
service nginx configtest
Затем перезагрузите сервис + nginx +
.
service nginx reload
Зайдите на веб-сайт в IE (в Vista и выше) или Firefox 26+ и проверьте журнал ошибок.
tail /var/log/nginx/error.log
Если в файле, определенном в + ssl_trusted_certificate +
, отсутствует сертификат, отображается ошибка, подобная следующей:
2014/05/09 17:38:16 [error] 1580#0: OCSP_basic_verify() failed (SSL: error:27069065:OCSP routines:OCSP_basic_verify:certificate verify error:Verify error:unable to get local issuer certificate) while requesting certificate status, responder: ocsp.startssl.com
Если такие ошибки не отображаются, переходите к следующему шагу.
Тестирование сшивания OCSP
Ниже будут объяснены два метода проверки работоспособности сшивания OCSP - инструмент командной строки + openssl +
и проверка SSL в Qualys.
Команда OpenSSL
Вывод этой команды отображает раздел, в котором говорится, ответил ли ваш веб-сервер данными OCSP. Мы + grep +
этот конкретный раздел и отображаем его.
echo QUIT | openssl s_client -connect www.digitalocean.com:443 -status 2> /dev/null | grep -A 17 'OCSP response:' | grep -B 17 'Next Update'
Замените + www.digitalocean.com +
на свое доменное имя. Если сшивание OCSP работает правильно, отображается следующий вывод.
OCSP response:
======================================
OCSP Response Data:
OCSP Response Status: successful (0x0)
Response Type: Basic OCSP Response
Version: 1 (0x0)
Responder Id: 4C58CB25F0414F52F428C881439BA6A8A0E692E5
Produced At: May 9 08:45:00 2014 GMT
Responses:
Certificate ID:
Hash Algorithm: sha1
Issuer Name Hash: B8A299F09D061DD5C1588F76CC89FF57092B94DD
Issuer Key Hash: 4C58CB25F0414F52F428C881439BA6A8A0E692E5
Serial Number: 0161FF00CCBFF6C07D2D3BB4D8340A23
Cert Status: good
This Update: May 9 08:45:00 2014 GMT
Next Update: May 16 09:00:00 2014 GMT
Вывод не отображается, если сшивание OCSP не работает.
Qualys онлайн тест SSL
Чтобы проверить это онлайн, перейдите на this website и введите имя своего домена. После завершения проверки проверьте в разделе * Protocol Details *.
изображение: https: //assets.digitalocean.com/articles/OCSP_Stapling/2.png [отчет Qualys SSL]
Дополнительное чтение
-
Статья Mozilla о сшивании OCSP - http://en.wikipedia.org/wiki/OCSP_stapling
-
Статья Википедии о сшивании OCSP - http://en.wikipedia.org/wiki/OCSP_stapling