Nginx mit SSL und SPDY

HTTPS korrekt aktiviert für kadder.de
HTTPS korrekt aktiviert für kadder.de (Google Chrome)

Wie einigen vielleicht aufgefallen ist, läuft mein Blog kadder.de neuerdings über eine verschlüsselte Verbindung (zu erkennen am HTTPS-Symbol in der Browser-Leiste). Hauptgrund für diese Umstellung, die leider etwas Zeit bei der First Byte Time kostet, war die Möglichkeit, Verbindung auch via SPDY für entsprechende Browser (z.B. Chrome) anzubieten. Außerdem hat es mich interessiert, wie sich die Umstellung der ganzen Domain auf SEO auswirkt – das wird sich aber erst in der nächsten Zeit zeigen.

 

nginx-Konfiguration für SSL und SPDY

Hier nur die Kurzfassung: es wird davon ausgegangen, dass Nginx, PHP, MYSQL und WordPress bereits laufen. Details zu meinem Setup, welches diese Zeilen liefert, gibt es in meinen vorherigen Blog-Posts: Speed Index < 1000 mit Nginx, ngx_pagespeed, PHP, W3TC und nginx + PHP unter Debian (+ W3TC) sowie Nginx: Gzip aktivieren. Da in den Debian-Paketen von nginx der SPDY-Support nicht enthalten ist verwende ich nginx von dotdeb.org

Ebenfalls zu den Vorbereitungen gehört die Beschaffung eines SSL-Zertifikats. Ich habe mich für RapidSSL entschieden, andere Anbieter funktionieren aber genauso. Ein selbst-signiertes Zertifikat würde auch funktioniert, hat aber den Nachteil, dass es Fehlermeldungen gibt. Hat man das SSL-Zertifikat und den SSL-Key , muss es nur der jeweiligen nginx-Konfiguration hinzugefügt werden:

server {
listen 443 spdy ssl;
ssl on;
ssl_certificate /etc/nginx/ssl/SSL.crt;
ssl_certificate_key /etc/nginx/ssl/ssl.key;
server_name   www.domain.de;
add_header    Alternate-Protocol 443:npn-spdy/2;
root          /var/www/domain.de;
index         index.php index.html index.htm;
try_files $uri $uri/ /index.php;
# log files, uncomment and set proper values
access_log    /var/log/nginx/domain.access.log;
error_log     /var/log/nginx/domain.error.log;
}

Kurze Erklärung zu den einzelnen Zeilen (soweit sie von den Standard-Werten abweichen). Zeile 2 aktiviert das SSL- und SPDY-Modul, 443 ist der Standard-Port für https-Verbindungen. In den Zeilen 4 und 5 werden die Zertifikats-Dateien angegeben. Wichtig ist wieder Zeile 7: damit wird dem Browser mitgeteilt, dass SPDY als alternatives Protokoll zur Verfügung steht.

Ergebnis

Wenn alles korrekt eingerichtet ist, zeigt sich dies zum einen am grünen Schloss (in Chrome) welches Anzeigt, das alle Inhalte über HTTPS ausgeliefert werden (benutzt man externe Services wie Google Fonts muss dich auch auf HTTPS umgestellt werden, außerdem alle Bild-URLs – letztes ist am einfachsten über die MYSQL-Datenbank zu realisieren).

Vorteil: man kann nun SPDY nutzen (sowohl der aktuelle Firefox als auch Chrome unterstützen es, Internet Explorer 11 ist nur unter Windows 8 dazu in der Lage) und hat außerdem eine sichere Verbindung zu seinen Lesern.

Update 15.12.2013
Auch meine anderen Seiten ilovegaming.de und routerzwang.de sind nun mit SPDY und https erreichbar – auch wenn dort keine kritischen Inhalte veröffentlicht werden, schadet sich sicherlich nichts, etwas mehr auf Verschlüsselung zu setzen. Und der Ladezeit hilft es bei modernen Browsern auch.

Schreibe einen Kommentar

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