Nginx: SSL Cipher Suites vorschreiben

Home / Network / Nginx: SSL Cipher Suites vorschreiben
NGINX

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;

Als nächsten geben wir auch die Cipher Suites vor die wir für die SSL-Verbindungen nutzen möchten. Eine sehr sichere, aber leider nicht so Browser-/Botkompatible Cipher Suite (inkl. PFS) wäre zum Beispiel:

http {
ssl_prefer_server_ciphers on;
ssl_ciphers ECDH+AESGCM:ECDH+AES256:ECDH+AES128:!ADH:!AECDH:!MD5;
}

Eine sichere und kompatible Lösung (inkl. PFS und ohne) würde so aussehen:

http {
ssl_prefer_server_ciphers on;
ssl_ciphers ECDH+AESGCM:ECDH+AES256:ECDH+AES128:DH+3DES:!ADH:!AECDH:!MD5;
}

Beide Lösungen würden zum Beispiel den Internet Explorer 8 aussperren. Soll dieser aber weiterhin unterstützt werden, dann sollte es so aussehen:

http {
ssl_prefer_server_ciphers on;
ECDH+AESGCM:ECDH+AES256:ECDH+AES128:DH+3DES:RSA+3DES:!ADH:!AECDH:!MD5;
}

Man muss sich für sich selber entscheiden wie weit man das treiben möchte. Hilfreich kann es sein den SSL-Check bei Qualys SSL Labs zu nutzen. Da erkennt man sehr schnell wer was unterstützt oder nicht.