Let 'encrypt - nginx - Сшивание OCSP

11

Я хотел бы включить сшивание OCSP на моем сервере nginx. я использую

  • Версия nginx: nginx / 1.6.2
  • Debian
  • Зашифруем сертификат

Я действительно неопытный в этом вопросе, так что это может быть тривиальной проблемой.

Вот мой конфиг безопасности nginx

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    ssl_dhparam /etc/ssl/private/dhparams_4096.pem;

Вот мой сайт / Конфигурация безопасности сервера:

    add_header Strict-Transport-Security "max-age=31536000; includeSubdomains; preload";

    # All files have been generated by Let's encrypt
    ssl_certificate /etc/letsencrypt/live/myexample.org/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/myexample.org/privkey.pem;

    # Everything below this line was added to enable OCSP stapling
    # What is that (generated file) and is that required at all?
    ssl_trusted_certificate /etc/letsencrypt/live/myexample.org/chain.pem;

    ssl_stapling on;
    ssl_stapling_verify on;
    resolver 8.8.8.8 8.8.4.4 valid=300s;
    resolver_timeout 5s;

Я читал, что этого будет достаточно, чтобы включить сшивание OCSP.

Но если я проверю это с помощью

 openssl s_client -connect myexample.org:443 -tls1 -tlsextdebug -status

Я получу следующий ответ:

TLS server extension "renegotiation info" (id=65281), len=1
0001 - <SPACES/NULS>
TLS server extension "EC point formats" (id=11), len=4
0000 - 03 00 01 02                                       ....
TLS server extension "session ticket" (id=35), len=0
TLS server extension "heartbeat" (id=15), len=1
0000 - 01                                                .
OCSP response: no response sent
depth=1 C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X1
verify error:num=20:unable to get local issuer certificate
verify return:0
---
Certificate chain
 0 s:/CN=myexample.org
   i:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X1
 1 s:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X1
   i:/O=Digital Signature Trust Co./CN=DST Root CA X3
---
[...]

Особенно

OCSP response: no response sent

Что я делаю неправильно?

Иерархия сертификатов:

  • DST Root CA X3
    • Давайте зашифруем авторитет X1
      • myexample.org

РЕДАКТИРОВАТЬ:

OCSP: URI: http://ocsp.int-x1.letsencrypt.org/
CA-Issuer: URI: http://cert.int-x1.letsencrypt.org/
ST-DDT
источник
У сертификатов в вашей цепочке URL-адрес OCSP установлен в расширении AIA?
garethTheRed
1
@Braiam - Вы связались с правильным документом? Там нет упоминания о OCSP там. Кому бы ни понравился этот комментарий - вы его сначала прочитали?
garethTheRed
@garethTheRed Я отредактировал свой пост, добавив URL-адрес OCSP из сертификата.
ST-DDT
@Braiam Я прочитал ваш связанный документ и AFAICT. Я сделал все, как описано там. (За исключением cronjob, который не имеет отношения ни к безопасности, ни к моему вопросу)
ST-DDT
Большой! Это здесь. К сожалению, я не особо разбирался с nginx, поэтому не могу помочь вам настроить его. Был ли на самом деле первый URL, который пришел на ум. Единственная другая мысль - это ваши fullchain.pemи chain.pemфайлы - они одинаковые? Разве ssl_trusted_certificateдиректива не должна использовать fullchain.pemфайл?
garethTheRed

Ответы:

10

Следуя стандартной настройке nginx, вам не нужно указывать ssl_trusted_certificateцепочку. Следующего должно быть достаточно:

ssl_certificate /etc/letsencrypt/live/myexample.org/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/myexample.org/privkey.pem;
ssl_stapling on;
ssl_stapling_verify on;

Смотрите здесь для дальнейшего контекста.

Крис
источник
Хорошо, это упрощает мой конф nginx и работает так же хорошо!
Шаути
Я все еще получаю ошибку , когда я проверить его с этим сайтом ssldecoder.org любого намеком?
Александр Шранц
Исправил проблему, когда у вас есть несколько ssl, вам нужно включить его во всех блоках, иначе nginx молча завершится неудачей.
Александр Шранц
9

Я нашел решение на основе учебника, который нашел там :

cd /etc/ssl/private
wget -O - https://letsencrypt.org/certs/isrgrootx1.pem https://letsencrypt.org/certs/lets-encrypt-x1-cross-signed.pem https://letsencrypt.org/certs/letsencryptauthorityx1.pem https://www.identrust.com/certificates/trustid/root-download-x3.html | tee -a ca-certs.pem> /dev/null

и добавьте это в конфигурацию вашего сайта / сервера

ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/ssl/private/ca-certs.pem;

Перезагрузите ваш конфиг

ВАЖНО: Откройте браузер и зайдите на свою веб-страницу один раз.

Затем вы можете проверить свой сервер локально с помощью этого cmd:

openssl s_client -connect myexample.org:443 -tls1 -tlsextdebug -status

Скорее всего, вы получите правильный ответ, как это

OCSP response:
======================================
OCSP Response Data:
    OCSP Response Status: successful (0x0)
    Response Type: Basic OCSP Response
    Version: 1 (0x0)
    Responder Id: C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X1

Не беспокойся, если получишь

Verify return code: 20 (unable to get local issuer certificate)

в нижней части, а также , шифровать сертификат Давайте еще не в по умолчанию доверенного хранилища сертификатов. (У меня нет большого опыта SSL, поэтому я могу ошибаться)

Ошибка не появится, если вы выполните следующий cmd на сервере:

openssl s_client -CApath /etc/ssl/private/ -connect myexample.org:443 -tls1 -tlsextdebug -status

После этого вы можете протестировать свой сервер, используя:

https://www.digicert.com/help/

Имейте в виду, что сейчас ответы OCSP не будут получены тестами ssllabs. Я предполагаю, что это потому, что сертификат Let's encrypt еще не находится в хранилищах доверенных сертификатов по умолчанию.

ST-DDT
источник