OCSP Stapling unter nginx aktivieren

Beim Einsatz von SSL gibt es einiges zu beachten, um Seiten ordentlich verschlüsselt auszuliefern. Grundvoraussetzung hierfür ist ein X.509 Zertifikat mit einem öffentlichen und einem privaten Schlüssel. Der private Schlüssel liegt ausschliesslich gut geschützt auf dem Webserver. Der öffentliche Schlüssel wird von jedem Client verwendet, der über https auf die entsprechende Seite zugreifen möchte. Let’s Encrpyt ist hier nur ein Beispiel, zur Ausstellung von Zertifikaten.

Den kompletten Prozess, wie Let’s Encrpyt zusammen mit dem Webserver nginx funktioniert, habe ich hier beschrieben. Klick. Ein X.509 Zertifikat, welches für SSL eingesetzt wird, hat immer eine bestimmte Lebensdauer. Je nach ausstellender CA kann dies variieren. Unabhängig von der zeitlichen Gültigkeit besteht auch die Möglichkeit, ein Zertifikat vorzeitig zurückzuziehen. Dies kann z.B. erforderlich sein, wenn die Sicherheit des privaten Schlüssels nicht mehr einwandfrei gegeben ist. Wird ein Zertifikat vorzeitig revoked, soll die Verschlüsselung über TLS natürlich nicht mehr möglich sein. Damit dies auch gewährleistet ist, muss beim Verbindungsaufbau geprüft werden, ob das Zertifikat überhaupt noch gültig ist. Für diesen Vorgang wird das Protokoll „OCSP“ (Online Certificate Status Protocol) verwendet. Dazu ist in jedem Zertifikat die URL für den zugehörigen OCSP Dienst hinterlegt. Dieser wird bei jedem Verbindungsaufbau vom Client angefragt.

OCSP Stapling nginx

Die Verwendung von OCSP hat jedoch zwei Nachteile.

Datenschutz:
Jede Anfrage an den Webserver wird natürlich an den OCSP Dienst weitergeleitet. Somit lässt sich protokollieren, wer wann auf die Seite zugegriffen hat.

Performance:
Ist eine Seite sehr stark frequentiert, landen natürlich auch massenweise OCSP Anfragen bei der CA. Diese müssen erstmal abgearbeitet werden. Dazu wird eine entsprechende Infrastruktur benötigt.

Um beide Punkte zu vermeiden, gibt es die Funktion „OCSP Stapling“. Dabei sendet der eigene Webserver bei einer Anfrage direkt den Validierungsstatus des eigenen Zertifikats. Somit ist eine zusätzliche Anfrage bei der CA nicht mehr erforderlich. OCSP Stapling ist unter nginx standardmäßig nicht aktiv, lässt sich aber sehr leicht aktivieren. Dazu muss die Konfigurationsdatei bearbeitet werden, die für den Virtual Host zuständig ist.

sudo nano /etc/nginx/conf.d/yourdomain.com.conf

Je nach Grundkonfiguration kann die zu bearbeitende Datei auch unter „/etc/ngix/sites-available/“ liegen. Unterhalb der SSL Einstellungen wird folgender Punkt eingetragen. Der Wert für „ssl_trusted_certificate“ muss natürlich an die eigenen Gegebenheiten angepasst werden. Hier wird die Zertifikatskette bestehend aus Root und Intermediate Zertifikat benötigt.

 
##
# OCSP
##

ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/letsencrypt/live/yourdomain.com/chain.pem;

OCSP Stapling nginx

Nach den Anpassungen muss die Konfiguration von nginx neu eingelesen werden.

sudo systemctl reload nginx.service

Um den Status zu testen, kann auf dem Webserver ein Befehl ausgeführt werden. Wichtig ist hierbei der Wert bei „OCSP Response“

openssl s_client -connect yourdomain.com:443 -status < /dev/null

OCSP Stapling nginx

Alternativ kann auch unter ssllabs.com ein kompletter SSL Test durchgeführt werden. Hierbei wird auch auf OCSP Stapling getestet.

Quelle:http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_stapling