Поиск по сайту:

Как настроить сшивание OCSP на Apache и Nginx


Введение

Сшивание OCSP — это расширение TLS/SSL, целью которого является повышение производительности согласования SSL при сохранении конфиденциальности посетителей. Прежде чем приступить к настройке, коротко о том, как работает отзыв сертификата. В этой статье для демонстрации используются бесплатные сертификаты, выпущенные StartSSL.

В этом руководстве будет использоваться базовая конфигурация для Apache и Nginx, описанная ниже:

  • Как настроить несколько SSL-сертификатов на одном IP-адресе с помощью Apache в Ubuntu 12.04
  • Как настроить несколько SSL-сертификатов на одном IP-адресе с помощью Nginx в Ubuntu 12.04

О ОССП

OCSP (протокол статуса онлайн-сертификата) — это протокол для проверки того, был ли отозван сертификат SSL. Он был создан как альтернатива CRL для сокращения времени согласования SSL. С CRL (Certificate Revocation List) браузер загружает список отозванных серийных номеров сертификатов и проверяет текущий сертификат, что увеличивает время согласования SSL. В OCSP браузер отправляет запрос на URL-адрес OCSP и получает ответ, содержащий статус действительности сертификата. На следующем снимке экрана показан URI OCSP для linux-console.net.

О сшивании OCSP

У OCSP есть две основные проблемы: конфиденциальность и большая нагрузка на серверы ЦС.

Поскольку OCSP требует, чтобы браузер связался с ЦС для подтверждения действительности сертификата, это ставит под угрозу конфиденциальность. ЦС знает, к какому веб-сайту осуществляется доступ и кто к нему обращался.

Если веб-сайт HTTPS получает много посетителей, сервер OCSP ЦС должен обрабатывать все запросы OCSP, сделанные посетителями.

Когда реализовано сшивание OCSP, держатель сертификата (читай веб-сервер) сам запрашивает сервер OCSP и кэширует ответ. Этот ответ «сшивается» с рукопожатием TLS/SSL с помощью ответа на расширение Certificate Status Request. В результате серверы ЦС не обременены запросами, а браузерам больше не нужно раскрывать привычки пользователей в Интернете. любой третьей стороне.

Проверить наличие поддержки сшивания OCSP

Сшивание OCSP поддерживается на

  • HTTP-сервер Apache (>=2.3.3)
  • Nginx (>=1.3.7)

Прежде чем продолжить, проверьте версию вашей установки с помощью следующих команд.

Апач:

apache2 -v

Нгинкс:

nginx -v

Пользователи CentOS/Fedora заменяют apache2 на httpd.

Получить пакет ЦС

Получите сертификат корневого ЦС и промежуточного ЦС в формате PEM и сохраните их в одном файле. Это для сертификатов корневого и промежуточного ЦС 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 и поместите эти строки внутри директивы .

sudo nano /etc/apache2/sites-enabled/example.com-ssl.conf
SSLCACertificateFile /etc/ssl/ca-certs.pem
SSLUseStapling on

Расположение кеша должно быть указано снаружи .

sudo nano /etc/apache2/sites-enabled/example.com-ssl.conf
SSLStaplingCache shmcb:/tmp/stapling_cache(128000)

Если вы следовали этой статье, чтобы настроить сайты SSL на Apache, файл виртуального хоста будет выглядеть так:

/etc/apache2/sites-enabled/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

Перезагрузите, если отображается Синтаксис в порядке.

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;

Если вы следовали этой статье, чтобы настроить хосты SSL на Nginx, полный файл виртуального хоста будет выглядеть так:

/etc/nginx/sites-enabled/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 linux-console.net:443 -status 2> /dev/null | grep -A 17 'OCSP response:' | grep -B 17 'Next Update'

Замените linux-console.net своим доменным именем. Если сшивание 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

Чтобы проверить это онлайн, перейдите на этот сайт и введите свое доменное имя. После завершения тестирования проверьте раздел Сведения о протоколе.

Дополнительное чтение

  • Статья Mozilla о сшивании OCSP — http://en.wikipedia.org/wiki/OCSP_stapling
  • Статья в Википедии о сшивании OCSP — http://en.wikipedia.org/wiki/OCSP_stapling