Perfect Forward Secrecy: Apache SSL abhörsicher konfigurieren

Wer als Website-Betreiber den Entschluss gefasst hat, die Kommunikation mit seinem Server durch SSL/HTTPS abzusichern, tut etwas Gutes. Um aber wirklich abhörsicher zu sein, reicht das alleine nicht aus. Denn ein Geheimdienst, der alles aggressiv speichert, was durch die Leitungen geht, kann später eventuell sämtlichen Datenverkehr entschlüsseln, sollte ihm der Private Key der Site vorliegen. Dies kann z.B. dann passieren, wenn ein Server konfisziert wird. Um dem zu entgehen, sollte man seinen Apache mit Perfect Forward Secrecy konfigurieren.

Grundsätzlich ist es so, dass ein Webbrowser (Client), der mit einer Website (Server) per HTTPS kommunizieren will, zunächst einen Handshake mit der Gegenseite macht. Dabei wird dann asymmetrisch verschlüsselt ein symmetrischer Key festgelegt, mit dem die folgenden Datenpakete verschlüsselt werden. Kommt man nun nachträglich an den Private Key der Website, kommt man auch an den Key, der von beiden Parteien festgelegt wurde und kann alles entschlüsseln.

Nun gibt es aber schon seit Jahren dafür eine Lösung, die aus irgendeinem Grund aber noch nicht sonderlich verbreitet ist. Das ist die sogenannte Perfect Forward Secrecy, die dann besteht, wenn beim Handshake ein Diffie-Hellman-Key-Exchange stattfindet anstatt die oben beschriebene RSA-Methode zu verwenden. Bei diesem Schlüsselaustauschverfahren einigen sich beide Parteien auf einen gemeinsamen Schlüssel, ohne dass ein Man-in-the-middle, also ein Abhörer, an ihn herankommt. Und das auch dann, wenn er sämtliche Kommunikation zwischen beiden mitlesen konnte.

Das hört sich erstmal unmöglich an, funktioniert aber, wie mathematisch bewiesen wurde. Daher sollten alle, die Wert auf Datenschutz legen, dieses Verfahren aktivieren. Das ist ohne Probleme möglich, wenn man einen einigermaßen aktuellen Apache und OpenSSL ab Version 1.0.1 am Laufen hat. Um erst einmal zu testen, ob man vielleicht nicht sowieso schon den Diffie-Hellman-Schlüsselaustausch verwendet, kann man hier einen SSL-Check machen. Auf der Seite gibt es auch noch eine Menge anderer nützlicher Tipps zum Thema Sicherheit und Datenschutz.

Folgende Zeilen müssen dann für das neue Verfahren in der Apache Virtualhost-Konfiguration eingetragen werden:

SSLProtocol -All +TLSv1
SSLHonorCipherOrder On
SSLCipherSuite EECDH+AES:EDH+AES:-SHA1:EECDH+RC4:EDH+RC4:EECDH+AES256:EDH+AES256:AES256-SHA:!aNULL:!eNULL:!EXP:!LOW:!MD5

Nach einem Apache-Restart sollte es dann aktiv sein. Gleichzeitig schließt die Konfiguration noch alte SSL-Versionen aus, die noch andere Sicherheitsprobleme haben. Ob alles funktioniert, kann dann wieder mit dem oben erwähnten SSL-Check geprüft werden. Eigentlich ein kleiner Eingriff, der aber für ein ordentliches Plus an Datenschutz sorgt.