NGINX

Nginx: OCSP stapling aktivieren

Wer mit SSL Zertifikaten arbeitet weiß auch das diese irgendwann ablaufen oder für ungültig erklärt werden können. Damit dies auch jeder Browser und jedes Betriebsystem mitbekommt, wurde die CRL (certificate revocation list; Zertifikatsperrliste) erfunden. Leider werden diese Sperrlisten von den Betriebssystem nur in bestimmten Zeitabständen abgerufen. Wird ein Zertifikat heute für ungültig erklärt und die Betriebssysteme haben es noch nicht mitbekommen, weil sie die CRL von der CA erst morgen aktualisieren werden, bleibt das Zertifikat bis dahin gültig.
Aus diesem Grund wurde OCSP (Online Certificate Status Protocol) entwickelt. Durch das Netzwerkprotokoll ist es Clients möglich durch eine Anfrage beim OCSP-Responder (meist ein Server vom Root CA Betreiber; URL steht im Zertifikat) nachzufragen ob das Zertifikat noch gültig ist oder nicht. So bekommt der Client die aktuellen Sperrinformationen geliefert.
OCSP stapling lässt dich bei Nginx mit folgenden Zeilen in der „nginx.conf“ aktivieren:

# aktiviert OCSP stapling
ssl_stapling on;
# aktiviert die Überprüfung
ssl_stapling_verify on;
# Trusted Certificate
ssl_trusted_certificate /etc/nginx/ssl/alphassl.pem;

Sollte man mehrere Zertifikate auf dem Webserver zu Verfügung stellen, dann sollte man die Einstellungen in die entsprechende „http“-Konfiguration schreiben.
Die Datei für „ssl_trusted_certificate“ muss man manuell im PEM-Format erstellen. Dabei besteht die Datei aus den Zertifikaten des jeweiligen Anbieters, welche man auf deren Website bekommt. In einigen Fällen werden diese Zertifikate auch bei der Beauftragung des SSL-Zertifikats mitgeschickt. Wichtig: Damit die Überprüfung auch wirklich funktioniert müssen in die „ssl_trusted_certificate“ Datei das Root-Zertifikat und alle Intermediate-Zertifikate rein!

Continue reading…

NGINX

Nginx: SSL Cipher Suites vorschreiben

Bei einer SSL-Verbindung wird nicht nur ausgehandelt welches SSL-Protokoll benutzt werden soll, sondern auch welche Verschlüsselung es sein soll. Normalerweise gibt der Browser hier den Ton an und schlägt dem Webserver vor welche Cipher Suites er nutzen möchte. Die Browser fangen meisten immer mit schwachen Verschlüsselungen (z.B. RC4) an, obwohl sie auch viel sichere Verfahren könnten. RC4 sollte in Zeiten von NSA und Co. zum Beispiel gar nicht mehr zum Einsatz kommen, denn es gilt als geknackt. Erst wenn Browser und Webserver sich für eine Cipher Suite entschieden haben, kommt auch eine Verbindung zustande. Jede Cipher Suite ist eine Kombination aus vier standardisierten Algorithmen.
Leider unterstützen nicht alle Browser und Bots alle Verschlüsselungsverfahren, daher ist ist hier etwas Feinarbeit nötig und man muss einen Kompromiss eingehen.

Als erstes sollte Nginx die Cipher Suite dem Browser vorschreiben welches Verfahren man nutzen möchte und nicht umgekehrt. Standardmäßig ist diese Option aus. Mit der folgenden Zeile für die Nginx Konfiguration schalten wir diese erstmal an:

http {
ssl_prefer_server_ciphers on;
}

Jetzt würde die Cipher Suite so aussehen: ssl_ciphers HIGH:!aNULL:!MD5;

Continue reading…