TLS und nginx

Wo ich im letzten Beitrag schon etwas über den HSTS Header geschrieben habe, habe ich die Gelegenheit genutzt
und meine TLS Einstellungen im nginx etwas zu optimieren und strikter zu konfigurieren.

Ziel: Konsquenter Einsatz von Forward Secrecy und nur noch Nutzung von starken Verschlüsselungen.
Nach etwas Recherche und herumspielen schaut der entsprechende Bereich meiner nginx Konfiguration jetzt so aus:

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:
            ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:
            ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:
            ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:
            ECDHE-RSA-AES256-SHA:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA;
ssl_session_cache shared:DEVHSSL:10m;

Erklärung zu den einzelnen Punkten:

  • ssl_protocols: Ich möchte nur noch TLS unterstützen, kein SSL (weder in Version 2 noch 3) mehr.
    Es gibt aus meiner Sicht keinen guten Grund noch SSL zu unterstützen, alle aktuellen Browser
    unterstüzen mindestens TLSv1.
  • ssl_prefer_server_ciphers: Wenn ein Browser sich zum Webserver verbindet, nennt dieser erst
    einmal die von ihm präferierten Ciphers. Diese sind nicht immer die stärksten, sondern häufig die
    schnellsten. Zum Beispiel bevorzugt der Internet Explorer Verfahren ohne Perfect Secrecy. Mit
    dieser Einstellung sagen wir einem Browser, er möchte doch bitte eines unserer bevorzugten
    Verfahren nutzen.
  • ssl_ciphers: Dies sind in absteigender Reihenfolge alle Verfahren, die wir unterstützen möchten.
    Alle Cipher setzen Perfect Secrecy nach Diffie Hellman voraus, wenn möglich auch mittels
    elliptischer Kurven. Ansonsten bevorzugen wir stärkeres (256 Bit) AES sowie längere (384 Bit)
    SHA Hashes. Hier finden sich keinerlei „schwache“ Verfahren mehr wie RC4 oder MD5. Der Nachteil
    an dieser Konfiguration ist, das wir sehr alte Browser wie den Internet Explorer 6/8 unter Windows
    XP mehr unterstützen, aber Windows XP sollte ohnehin niemand mehr benutzen um ins Internet zu gehen…
  • ssl_session_cache: Normalerweise wird bei jeder Verbindung die SSL Session neu ausgehandelt. Hier
    werden jetzt für 10 Minuten die einzelnen Sessions zwischengespeichert, wodurch die gesamte Seite
    mit SSL deutlich schneller wird.

Der Lohn der Mühen ist ein A+ Rating beim SSL Test von Qualys.

Hier noch diverse Links zu Hintergründen und den nginx Einstellungen:
https://de.wikipedia.org/wiki/Diffie-Hellman-Schlüßsselaustausch
http://www.peterbe.com/plog/ssl_session_cache-ab
http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_prefer_server_ciphers

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.