Lassen Sie 'encrypt - nginx - OCSP Heften

11

Ich möchte das OCSP-Heften auf meinem Nginx-Server aktivieren. Ich benutze

  • Nginx-Version: Nginx / 1.6.2
  • Debian
  • Lassen Sie uns das Zertifikat verschlüsseln

Ich bin in dieser Angelegenheit wirklich unerfahren, daher könnte es ein triviales Problem sein.

Hier meine Nginx-Sicherheitskonfiguration

    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;

Hier meine Site / Server-Sicherheitskonfiguration:

    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;

Ich habe gelesen, dass dies ausreichen würde, um das OCSP-Heften zu ermöglichen.

Aber wenn ich es mit teste

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

Ich werde folgende Antwort erhalten:

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

Insbesondere

OCSP response: no response sent

Was mache ich falsch?

Zertifikatshierarchie:

  • DST-Stammzertifizierungsstelle X3
    • Verschlüsseln wir die Behörde X1
      • myexample.org

BEARBEITEN:

OCSP: URI: http://ocsp.int-x1.letsencrypt.org/
CA-Issuer: URI: http://cert.int-x1.letsencrypt.org/
ST-DDT
quelle
Haben die Zertifikate in Ihrer Kette die OCSP-URL in ihrer AIA-Erweiterung festgelegt?
GarethTheRed
1
@Braiam - hast du auf das richtige Dokument verlinkt? Es gibt dort keine Erwähnung von OCSP. Wer auch immer +1 diesen Kommentar - hast du ihn zuerst gelesen?
garethTheRed
@garethTheRed Ich habe meinen Beitrag bearbeitet, um die OCSP-URL aus dem Zertifikat hinzuzufügen.
ST-DDT
@Braiam Ich habe Ihr verlinktes Dokument gelesen und AFAICT Ich habe alles wie dort beschrieben richtig gemacht. (Mit Ausnahme des Cronjobs, der weder für die Sicherheit noch für meine Frage relevant ist)
ST-DDT
Groß! Es ist da. Leider habe ich mich nicht viel mit Nginx beschäftigt, kann Ihnen also nicht wirklich bei der Konfiguration helfen. Ob die URL tatsächlich vorhanden war, fiel mir als erstes ein. Der einzige andere Gedanke ist Ihr fullchain.pemund chain.pemDateien - sind sie gleich? Sollte die ssl_trusted_certificateDirektive nicht auch die fullchain.pemDatei verwenden?
GarethTheRed

Antworten:

10

Nach dem Standard-Nginx-Setup sollten Sie keine ssl_trusted_certificateKette angeben müssen . Folgendes sollte ausreichen:

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;

Siehe hier für weiteren Kontext.

Chris
quelle
Schön, das vereinfacht meine Nginx-Konf und funktioniert genauso gut!
Shautieh
Ich erhalte immer noch eine Fehlermeldung, wenn ich es mit dieser Site ssldecoder.org teste. Gibt es einen Hinweis?
Alexander Schranz
hat das Problem behoben, wenn Sie mehrere SSL haben, die Sie benötigen, um es in allen Blöcken zu aktivieren, sonst schlägt nginx stillschweigend fehl.
Alexander Schranz
9

Ich fand die Lösung basierend auf dem Tutorial Ich fand es :

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

und fügen Sie dies Ihrer Site / Server-Konfiguration hinzu

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

Laden Sie Ihre Konfiguration neu

WICHTIG: Öffnen Sie Ihren Browser und greifen Sie einmal auf Ihre Webseite zu.

Dann können Sie Ihren Server lokal mit diesem cmd testen:

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

Sie werden höchstwahrscheinlich eine gültige Antwort wie diese erhalten

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

Mach dir keine Sorgen, wenn du eine bekommst

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

am Boden als auch , ist das Lassen Sie uns encrypt Zertifikat noch nicht in der Standard - Zertifikatspeicher vertraut. (Ich habe nicht viel SSL-Erfahrung, also könnte ich mich irren)

Der Fehler wird nicht angezeigt, wenn Sie das folgende cmd auf dem Server ausführen:

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

Danach können Sie Ihren Server testen mit:

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

Beachten Sie, dass OCSP-Antworten derzeit nicht von den ssllabs-Tests erfasst werden. Ich gehe davon aus, dass dies daran liegt, dass sich das Let's-Verschlüsselungszertifikat noch nicht in den standardmäßigen vertrauenswürdigen Zertifikatspeichern befindet.

ST-DDT
quelle