Seitensicherheit

Manchmal hat meine Trägheit Vorteile. Noch bevor ich mich um das untere Zehntel meiner Todo-Liste kümmern kann (117. Let's Encrypt-Zertifikat beantragen), reagiert mein Provider auf die entlarvende Konkurrenz und ergänzt meinen Vertrag ohne zusätzliche Kosten um ein GeoTrust QuickSSL Premium-Zertifikat, das regulär für 149 Euro angeboten wird.

Die Installation des Zertifikates und die Optimierung der nginx-Konfiguration gestalten sich relativ einfach (nginx.conf):

server { listen 80; server_name janeden.net return 301 https://eden.one$request_uri; } server { listen 443 ssl http2; server_name eden.one; ssl on; ssl_certificate /etc/ssl/certs/eden.one_public.cer; ssl_certificate_key /etc/ssl/certs/eden.one_private.key; [...] }

wobei die empfohlene Zusammenführung von primären und intermediärem Zertifikat (cat intermediate.cer >> primary.cer) wegen eines fehlenden Zeilenumbruchs zu einem nicht wohlgeformten Zertifikat führt. Sogar HTTP/2 lässt sich trotz der fehlenden ALPN-Unterstützung meines nginx aktivieren (dank AltSvc-Header). So fühlen sich wahrscheinlich andere Herren meines Alters nach dem Erwerb eines sportlichen Automobils mit versenkbarem Verdeck.

Entsprechend selbstbewusst prüfe ich meine Website mit Mozillas Observatorium, und das Ergebnis ist niederschmetternd: Wegen der fehlenden HTTP-Header Content Security Policy, HTTP Strict Transport Security, X-Content-Type-Options, X-Frame-Options und X-XSS-Protection sowie der mangelnden Subresource Integrity erhalte ich 0/100 Punkten (F!).

Das schmerzt ein wenig. Tatsächlich ist der Abstand zwischen dem bisherigen Zustand und der Bestnote minimal (nginx.conf):

add_header Content-Security-Policy "default-src https:; frame-ancestors 'none'"; add_header Strict-Transport-Security "max-age=31536000"; add_header X-XSS-Protection "1; mode=block"; add_header X-Content-Type-Options "nosniff";

Statt mich um die Integrität der Subressourcen zu kümmern, werfe ich sämtlichen Google-Code aus meinem Template und werde mit 110/100 Punkten (A+) belohnt. Die Bonuspunkte erhalte ich für die konsequente Unterdrückung von Inline-Skripten (Content Security Policy (CSP) implemented without 'unsafe-inline' or 'unsafe-eval') und die moderne Implementierung der Unrahmbarkeit (X-Frame-Options (XFO) implemented via the CSP frame-ancestors directive).

Zum Abschluss differenziere ich auch noch etwas beim Caching: Die Startseite wird 24 Stunden gecachet, alle anderen Seiten 7 Tage. Es ist nur eine Frage der Zeit, bis mich junge Frauen auf der Straße bewundernd auf meine schnittige Website ansprechen.