Нехай 'шифрують - 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/

Чи мають у сертифікатах у вашому ланцюжку URL-адресу OCSP у розширенні AIA?
garethTheRed

1
@Braiam - ви пов’язали правильний документ? Там немає жодної згадки про OCSP. Кому хто поставив +1 цей коментар - ви його прочитали спочатку?
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 ще не знаходиться у сховищах надійних сертифікатів за замовчуванням.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.