Oft liest man in diversen „Sicherheitsforen“, dass sich sichere, schnelle und browserkompatible Verschlüsselung ausschließen. Ich habe mich dem Thema nun gewidmet und einen gangbaren Mittelweg gefunden, der im SSLLabs.com-Sicherheitscheck eine A+ Benotung erzieht, keine heute gebräuchlichen Browser aussperrt und die zwei Cores meines kleinen ARM-Boards nicht übermäßig belastet. Die Anleitung bezieht sich auf Gentoo-Linux für meinen Cubietruck und Nginx als Webserver, lässt sich aber auch leicht auf andere Systeme übertragen.

Schritt 1

Eine hinreichend moderne OpenSSL-Version kompilieren und – wichtig – das bindist-Useflag ausschalten (es würden ansonsten wichtige Chiffren fehlen).

USE="-bindist"emerge -av openssl

Schritt 2

Die Nginx-Konfiguration anpassen und im server-Abschnitt folgende Chiffren eintragen:

server {
         listen 443 ssl spdy;
         server_name ***********.de;

         # re-use session as often as possible
         keepalive_timeout 70;

         ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
         ssl_ciphers "ECDHE-RSA-AES128-SHA DHE-RSA-AES128-SHA ECDHE-RSA-AES128-SHA256 !ADH !EXP !LOW !RC2 !3DES !SEED !RC4 +HIGH +MEDIUM";
         ...
}

Dabei ist unbedingt zu beachten, dass ECDHE-RSA-AES128-SHA256 vor den anderen Chiffren stehen muss, um dieser den Vorrang zu geben. Sie hat nur einen Overhead beim Handshake von ca. 30%, DHE-RSA-AES128-SHA dagegen ist die „teuerste“ Variante und verringert die Performance um ca. Faktor 3-4.

Die drei Chiffren ECDHE-RSA-AES128-SHA, DHE-RSA-AES128-SHA und ECDHE-RSA-AES128-SHA256 bieten jeweils Perfect Forward Security und werden von 90% aller heute relevanten Browser verstanden. Außen vor bleiben lediglich die Windows XP-Varianten vom Internet Explorer 6 und 8, die jedoch keine aus heutiger Sicht starke Verschlüsselung mit PFS bieten und somit sowieso nicht unterstützt werden sollten.
Auf der Haben-Seite stehen dabei alle Android-Browser ab 2.3.7, Chrome, Firefox, Internet Explorer (ab Windows Vista) ab Version 7 und Safari (OS X sowie iOS).

Schreibe einen Kommentar

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

Name *

sechzehn + dreizehn =