Validierung von Zertifikaten via OCSP Stapling

Auf dem Server eines Kunden ist mir bei der Einrichtung der Reverse-Proxy Konfiguration für eine Rest-API bei der Konfigurationsprüfung von Nginx folgende Warnung aufgefallen:

foldingAtHome Screenshot

In der Nginx-Konfiguration ist ssl_stapling aktiv - hierdurch wird OCSP (Online Certificate Status Protocol) Stapling verwendet. OCSP Stapling dient dazu in Echtzeit die Gültigkeit eines Zertifikats zu überprüfen und stellt damit eine Alternative zu Certificate Revocation Lists (CRL) dar. Beim OCSP Stapling fragt der Webserver (Zertifikatsinhaber) den OCSP-Server der Zertifikat-Ausstellers (CA) regelmäßig ab und erhält eine signierte OCSP-Antwort (Token) mit Zeitstempel. Wenn ein Browser versucht, sich mit der Website zu verbinden, wird diese OCSP-Antwort in den TLS-Handshake eingefügt und der Browser kann prüfen, ob das TLS-Zertifikat der Website gültig ist. Ist es gültig, baut der Browser die Verbindung zur Website auf, ansonsten wird die Verbindung verweigert. Da das Token von der CA signiert sein muss, kann der Zertifikatsinhaber das Token nicht fälschen. Sofern der Browser vom WebServer kein OCSP-Token erhält um die Gültigkeit des Zertifikats prüfen zu können, kontakiert dieser selbst den OCSP-Server.

Nginx testet beim Aufruf via nginx -t unter anderem, ob der OCSP-Server erreichbar ist und gibt eine Warnung aus, wenn dies nicht der Fall ist. Anscheinend nutzt Nginx für den Aufruf des OCSP_Servers jedoch anscheinend https und nicht http, denn via http ist die genannte URL problemlos erreichbar:

foldingAtHome Screenshot

Wie zu sehen ist, ist das Zertifikat des Servers abgelaufen, weshalb ich vermute, dass dies die Ursache für das Problem ist - etwas peinlich für eine CA einen Server mit einem seit Monaten abgelaufenen Zertifikat zu betreiben. Der Vorgänger von OCSP Stapling hieß OCSP (ohne Stapling) - hierbei war es generell die Aufgabe des Browsers den OCSP Server zu kontaktieren. Problematisch war dies u.a. da es für eine CA theoretisch möglich war, das Surfverhalten von Websitebesuchern zu tracken. Mir stellt sich nun die Frage, ob aufgrund der Warnung im Nginx-Log der Client das OCSP Request ausführen muss - das wäre auch mit Hinblick auf die DSGVO interessant.
Leider werden in den Entwicklertools der Browser keine OCSP-Requests im Kontext des TLS-Handshakes aufgezeichnet.

Mit folgendem Befehl lässt sich prüfen, ob eine Website OCSP Stapling verwendet oder nicht:

openssl s_client -connect [ihre.webseite.de]:443 -status

Wenn in der Ausgabe ein OCSP-Abschnitt auftaucht, dann verwendet der Server OCSP Stapling:

OCSP Response Data:
OCSP Response Status: successful (0x0)

Da bei der betroffenen Website mit der Warnung durch OpenSSL der OCSP Response Status ‘successful’ ist, gehe ich davon aus, dass der Browser während des Handshake selbst den OCSP-Server kontaktiert. Ich werde prüfen, ob die CA einen alternativen Resolver anbietet, dieser lässt sich in Nginx-Konfiguration entsprechend hinterlegen.

Für einen kommerziellen Anbieter wie RapidSSL als CA finde ich es nicht akzeptabel, dass ein OCSP-Server ein seit Monaten abgelaufenes Zertifikat hat - hier bietet sich Let’s encrypt als gute Alternative an.

Weiterführende Links: