Pozwól szyfrować - zszywanie - nginx - OCSP


11

Chciałbym włączyć zszywanie OCSP na moim serwerze nginx. używam

  • Wersja nginx: nginx / 1.6.2
  • debian
  • Zaszyfrujmy certyfikat

Jestem naprawdę niedoświadczony w tej sprawie, więc może to być trywialna kwestia.

Oto moja konfiguracja bezpieczeństwa 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;

Tutaj moja konfiguracja bezpieczeństwa strony / serwera:

    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;

Przeczytałem, że to wystarczy, aby umożliwić zszywanie OCSP.

Ale jeśli przetestuję to za pomocą

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

Otrzymam następującą odpowiedź:

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
---
[...]

Szczególnie

OCSP response: no response sent

Co ja robię źle?

Hierarchia certyfikatów:

  • DST Root CA X3
    • Let's Encrypt Authority X1
      • myexample.org

EDYTOWAĆ:

OCSP: URI: http://ocsp.int-x1.letsencrypt.org/
CA-Issuer: URI: http://cert.int-x1.letsencrypt.org/

Czy certyfikaty w twoim łańcuchu mają ustawiony adres URL OCSP w swoim rozszerzeniu AIA?
— garethTheRed

1
@Braiam - czy masz link do właściwego dokumentu? Nie ma tam wzmianki o OCSP. Ktokolwiek daje +1 temu komentarzowi - czytasz go pierwszy?
— garethTheRed

@garethTheRed Edytowałem swój post, aby dodać adres URL OCSP z certyfikatu.
— ST-DDT

@Braiam Przeczytałem twój połączony dokument i AFAICT zrobiłem wszystko, jak tam opisano poprawnie. (Z wyjątkiem koleżanki, która nie ma znaczenia dla bezpieczeństwa ani mojego pytania)
— ST-DDT

Świetny! Jest tutaj. Niestety, nie zajmowałem się zbytnio nginx, więc nie mogę pomóc w jego konfiguracji. Czy rzeczywiście był to adres URL, pojawiła się pierwsza rzecz. Jedyną inną myślą jest twoja fullchain.pemi chain.pempliki - czy są takie same? Czy ssl_trusted_certificatedyrektywa nie powinna również wykorzystywać fullchain.pempliku?
— garethTheRed

Odpowiedzi:


10

Zgodnie ze standardową konfiguracją nginx nie trzeba określać ssl_trusted_certificatełańcucha. Powinno wystarczyć:

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;

Zobacz tutaj dla dalszego kontekstu.


Fajnie, to upraszcza moją konfigurację nginx i działa równie dobrze!
— Shautieh

Nadal pojawia się błąd, gdy testuję go za pomocą tej witryny ssldecoder.org. Jakaś wskazówka?
— Alexander Schranz,

naprawiłem problem, gdy masz wiele ssl, musisz włączyć go we wszystkich blokach, w przeciwnym razie nginx zawiedzie po cichu.
— Alexander Schranz,

9

Znalazłem rozwiązanie na podstawie samouczka, który tam znalazłem :

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

i dodaj to do konfiguracji strony / serwera

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

Załaduj ponownie swoją konfigurację

WAŻNE: Otwórz przeglądarkę i uzyskaj dostęp do strony internetowej jeden raz.

Następnie możesz przetestować serwer lokalnie za pomocą tego polecenia cmd:

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

Najprawdopodobniej otrzymasz prawidłową odpowiedź w ten sposób

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

Nie martw się, jeśli dostaniesz

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

na dole , jak również , szyfrowania certyfikat niech nie jest jeszcze w domyślnym zaufanych sklepów certyfikatów. (Nie mam dużego doświadczenia ssl, więc mogę się mylić)

Błąd nie pojawi się, jeśli uruchomisz następujące polecenie cmd na serwerze:

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

Następnie możesz przetestować serwer za pomocą:

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

Pamiętaj, że teraz odpowiedzi OCSP nie zostaną wykryte przez testy ssllabs. Zakładam, że dzieje się tak, ponieważ certyfikat Let's encrypt nie znajduje się jeszcze w domyślnych zaufanych magazynach certyfikatów.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.