OCSP-Validierung - lokales Ausstellerzertifikat kann nicht abgerufen werden

17

Ich bin neu in der Einrichtung von SSL und habe meine ersten Schritte gemacht. Ich habe ein SSL-Zertifikat von RapidSSL für meine Domain gekauft und die dort angegebenen Schritte ausgeführt, um das Zertifikat zu installieren. Im Allgemeinen ist das Zertifikat gültig und funktioniert auf meinem Webserver (nginx v1.4.6 - Ubuntu 14.04.1 LTS). Wenn ich jedoch versuche, OCSP OCSP zu aktivieren, wird in meiner Datei nginx error.log der folgende Fehler angezeigt:

OCSP_basic_verify () ist fehlgeschlagen (SSL: Fehler: 27069065: OCSP-Routinen: OCSP_basic_verify: Fehler beim Überprüfen des Zertifikats: Fehler beim Überprüfen: Lokales Ausstellerzertifikat konnte nicht abgerufen werden), während der Zertifikatstatus angefordert wurde, Antwortender: gv.symcd.com

Ich habe es auch mit diesem Befehl von der Kommandozeile aus versucht:

openssl s_client -connect mydomain.tld: 443 2> & 1 </ dev / null

Und habe den "gleichen" Fehler wie in meinem error.log:

[...] SSL-Sitzung: Protokoll: TLSv1.2 Verschlüsselung: ECDHE-RSA-AES256-GCM-SHA384 [...] Startzeit: 1411583991 Zeitlimit: 300 (Sek.) Überprüfen Sie den Rückkehrcode: 20 (Lokaler Abruf nicht möglich) Ausstellerzertifikat)

Laden Sie das GeoTrust-Stammzertifikat herunter und versuchen Sie es mit dem folgenden Befehl:

openssl s_client -connect mydomain.tld: 443 -CAfile GeoTrust_Global_CA.pem 2> & 1 </ dev / null

Überprüfung ist in Ordnung:

[...] SSL-Sitzung: Protokoll: TLSv1.2 Verschlüsselung: ECDHE-RSA-AES256-GCM-SHA384 [...] Startzeit: 1411583262 Timeout: 300 (Sek.) Rückgabecode überprüfen: 0 (OK)

Irgendwie wird das GeoTrust-Stammzertifikat nicht gefunden / geliefert.

Meine Nginx-Site-Konfiguration:

server {
    listen 443;
    server_name mydomain.tld;

    ssl on;
    ssl_certificate /etc/ssl/certs/ssl.crt;
    ssl_certificate_key /etc/ssl/private/ssl.key;


    # Resumption
    ssl_session_cache shared:SSL:20m;

    # Timeout
    ssl_session_timeout 10m;

    # Security options
    ssl_prefer_server_ciphers on;
    ssl_ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS;
    ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;

    # OCSP Stapling
    # It means that you sent status info about your certificate along with the request,
    # instead of making the browser check the certificate with the Certificate Authority.
    # This removes a large portion of the SSL overhead, the CloudFlare post above explains it in more detail.
    ssl_stapling on;
    ssl_stapling_verify on;
    #ssl_trusted_certificate /etc/ssl/certs/ssl.pem;

    #resolver 8.8.8.8 8.8.4.4 valid=300s;
    #resolver_timeout 10s;

    # This forces every request after this one to be over HTTPS
    add_header Strict-Transport-Security "max-age=31536000";[...]};

RapidSSL schrieb in seiner Dokumentation, dass ich die folgenden Zertifikate in der folgenden Reihenfolge in die ssl.crt einfügen sollte:

  1. myserver.crt
  2. CA-Zwischenpaket (RapidSSL SHA256 CA - G3)
  3. Zwischenzertifizierungsstellen-Bundle (GeoTrust Global CA)

So tat ich...

Im Moment habe ich keine Ahnung, was ich falsch mache ... hoffentlich kann mir hier jemand helfen.

Vielen Dank!

kapale
quelle

Antworten:

17

Diese beiden Fehler hatten nichts mit der Fehlermeldung zu tun.

[...] SSL-Sitzung: Protokoll: TLSv1.2 Verschlüsselung: ECDHE-RSA-AES256-GCM-SHA384 [...] Startzeit: 1411583991 Zeitlimit: 300 (Sek.) Überprüfen Sie den Rückkehrcode: 20 (Lokaler Abruf nicht möglich) Ausstellerzertifikat)

Der obige Fehler wurde ausgegeben. Openssl_client Befehl. Wie von Florian Heigl erklärt, erhalten Sie diesen Fehler, weil der openssl_client das Globalsign Root-Zertifikat in benötigt /etc/ssl/certs.


OCSP_basic_verify () ist fehlgeschlagen (SSL: Fehler: 27069065: OCSP-Routinen: OCSP_basic_verify: Fehler beim Überprüfen des Zertifikats: Fehler beim Überprüfen: Lokales Ausstellerzertifikat konnte nicht abgerufen werden), während der Zertifikatstatus angefordert wurde, Antwortender: gv.symcd.com

Für diesen Fehler wurde er von der Routine nginx ocsp ausgegeben , insbesondere wenn Sie eine ssl_stapling_verify on;Zeile in der Datei nginx.conf hinzufügen .

Hier ein Auszug aus der Dokumentation, um ssl_stapling_verifyzu erklären, warum es den Fehler auslöst

Syntax: ssl_stapling_verify on | aus;

Aktiviert oder deaktiviert die Überprüfung von OCSP-Antworten durch den Server.

Damit die Überprüfung funktioniert, sollten das Zertifikat des Serverzertifikatsausstellers , das Stammzertifikat und alle Zwischenzertifikate mit der Anweisung ssl_trusted_certificate als vertrauenswürdig konfiguriert werden.

Mit anderen Worten, müssen Sie zur Verfügung stellen (2) Zwischen - CA - Bundle (RapidSSL SHA256 CA - G3) und (3) Zwischen - CA - Bundle (GeoTrust Globale CA)ssl_trusted_certificate Richtlinie.

cat GeoTrustGlobalCA.crt rapidsslG3.crt > ocsp-chain.crt

und ocsp-chain.crtzur ssl_trusted_certificateDirektive hinzufügen .

masegaloeh
quelle
Ich danke dir sehr! Ich habe es auch versucht, aber immer mit dem Befehl cli getestet.
Kapale
Woher bekommen wir die Zwischenzertifikate?
Ingo
1

Ich kann nur einen Teil davon beantworten.

openssl s_client -connect mydomain.tld: 443 2> & 1 </ dev / null

würde das Globalsign Root-Zertifikat in / etc / ssl / certs benötigen. Es gibt ein Paket mit Ca-Zertifikaten. Haben Sie das installiert?

Florian Heigl
quelle
Ich verstehe nicht, warum ich Globalsign Root Cert im Umgang mit RapidSSL und GeoTrust verwenden soll? sie unterscheiden sich von Globalsign ... korrigieren Sie mich, wenn ich mich geirrt habe!
Digitale Seite