Kategorien
Blog

TLS besser machen

Anmerkung: Auch wenn im folgenden ganz viele Dinge irgendwas mit SSL heißen, möchte ich noch einmal ausdrücklich darauf hinweisen, dass diese Bezeichnung seit 15 Jahren(!) veraltet ist. SSL war eine proprietäre Verschlüsselungserweiterung von Netscape (und es gab vergleichbare Technik von Microsoft unter dem Namen PCT). Seit es 1999 von der IETF standardisiert wurde, heißt es TLS.

TLS (https) habe ich auf dieser Seite schon seit einiger Zeit angeboten. Bisher hatte ich dazu ein Zertifikat von CAcert, doch die sind leider auf den meisten Systemen nicht Teil der vorgegebenen vertrauenswürdigen Zertifizierungsstellen (vgl. Kryptographie ist schwierig). Dadurch war die verschlüsselte Verbindung zu meinem Blog außerhalb von Nerdkreisen nicht zu gebrauchen, weil sie je nach Browser mit verschieden drastischen Sicherheitswarnungen verbunden war. Das musste besser werden.

Im SSL Server Test (seufz) schlug sich das dann auch in einer entsprechenden Note nieder:

Overall Rating: F

Ein F (Note 6). Nicht gut.

Erst einmal brauchte ich neue Zertifikate: die praktischste Zertifizierungsstelle für den privaten Einsatz ist im Moment wohl StartSSL (seufz): deren Zertifikate sind allgemein akzeptiert (und das obwohl sie eigentlich sogar erheblich geringere Anforderungen an die Identitätsfeststellung hat als CAcert — aber was soll’s?). Adressvalidierte Zertifikate lassen sich kostenlos in einem komplett automatisierten Prozess signieren.

Leider gilt das nicht für Wildcard-Zertifikate, so dass jede (Sub-)Domain in Zukunft ihr eigenes Zertifikat benötigt. Für die Auswahl des richtigen Zertifikats brauchen Server und Browser dann Unterstützung für SNI. Auf Browserseite sieht das inzwischen ganz gut aus, nur wer mit Internet Explorer auf Windows XP unterwegs ist hat eine gute Chance auf falsche Zertifikatswarnungen (aber wer damit surft, der ist wahrscheinlich Kummer gewöhnt, außerdem macht Windows XP im Jahr 2014 bisher nur 8,4% der Zugriffe auf mein Blog aus — und das mit allen dort verfügbaren Browsern). Auf Serverseite beherrscht Apache die Funktion seit Version 2.2.12 (2009), IIS seit Version 8.0 (Windows Server 2012).

Hier auf wazong.de funktioniert die https-Verbindung aber schon seit längerer Zeit nicht mit den in Apache integrierten TLS-Plugins sondern mit Pound (zur Erklärung siehe dort), und das ist in Debian wheezy im Moment Version 2.6 enthalten, deren SNI-Implementation — ääähm — originell ist und nicht mit Zertifikaten aus dem echten Leben zurechtkommt.

Ich musste mir also eine aktuelle Version 2.7b selbst kompilieren. Leider läuft mein Server aber im Moment noch zum größten Teil mit Debian squeeze, so dass es mir bisher nicht gelungen ist, die mit dem aktuellsten installierten openssl 1.0.1e zu linken. Was ich bisher auch probiert habe, immer zieht es openssl 0.9.8o an. Dadurch schaffe ich im Moment zwar SNI aber nur TLS 1.0 und nicht die beiden neueren Protokollversionen TLS 1.1 und 1.2.

Neuer Test:

Overall Rating: B

Ein B (Note 2). Schon deutlich besser. Aber wenn ich hier schon rumbastle, dann kann ich gleich mal nachsehen, was ich noch zur Sicherheit meiner Leser tun kann. Und tatsächlich geht da noch was: ich habe HSTS eingerichtet (Link zur Englischen Wikipedia, weil das in der Deutschen nur eine Randbemerkung ist) und bei der Gelegenheit den Zugriff ohne TLS gleich ganz unterbunden.

Das geht ohne zusätzliche Installation nur in der Apache-Konfiguration (.htaccess oder VirtualHost):

Header always merge Vary X-Pound-HTTPS
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"

RewriteEngine on

RewriteCond %{HTTP:X-Pound-HTTPS} =on
RewriteRule .* - [E=HTTPS:on]

RewriteCond %{HTTP:X-Pound-HTTPS} !=on
RewriteRule ^(.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

Noch ein Test: Hmm, naja, keine Änderung in der Bewertung, aber immerhin gibt es eine lobende Erwähnung:

This server supports HTTP Strict Transport Security with long duration.

Ok, damit bleibt mir auf meiner  ToDo-Liste:

  • Updates zu Debian wheezy machen und dann Pound neu kompilieren für TLS 1.1/1.2
  • Jede Menge Zertifikate erzeugen und die Konfiguration auf alle bei mir betriebenen Domains ausrollen.
  • WordPress irgendwie beibringen, auch die ganzen Bilder anderen nachgeladen Ressourcen auf meinem Server nur noch über https zu laden.

Von dentaku

Site Reliability Engineer, Internet-Ureinwohner, Infrastrukturbetreiber, halb 23-Nerd halb 42-Nerd, links, gesichtsblind.

Schreibt mit "obwaltendem selbstironischem Blick auf alles Expertentum" (Süddeutsche Zeitung)

4 Antworten auf „TLS besser machen“

Schreibe einen Kommentar

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