Ich wollte testweise Google SPDY auf meinem Server installieren, um mich einmal selbst von der angeblich gigantischen Geschwindigkeitszunahmen zu überzeugen. Die Installation von SPDY gestaltete sich als relativ einfach. Zunächst muss man sich den nötigen Link des Ubuntu/Debian Packages von Googles Projektseite besorgen (in diesem Fall mod_spdy 32-bit .deb (Debian/Ubuntu)). Danach geht es schon los mit der Installation:
wget https://dl-ssl.google.com/dl/linux/direct/mod-spdy-beta_current_i386.deb dpkg -i mod-spdy-*.deb apt-get -f install service apache2 restart
Fertig. Meh, leider doch nicht, denn SPDY basiert auf SSL. Keine SPDY Verbindung ohne SSL-Verschlüsselung. Und was braucht man für SSL? Ein Zertifikat. Zwar ist der Vorgang sich ein gültiges Zertifikat zu erstellen nicht trivial, aber im Internet gibt es gute Tutorials und auch kostenlose Zertifikate. Ich folgte dem sehr guten Tutorial bei www.dermute.de und erstellte mir dadurch ein von https://www.startssl.com/ signiertes SSL-Zertifikat. Natürlich hätte ich mir auch ein Zertifikat bei der CaCert erstellen können, wo ich seit einigen Jahren Assurer bin. Den Grund dafür erkläre ich später mal.
So, mod_spdy ist installiert, ein SSL Zertifikat ebenso, alles zusammengefügt und ordentlich umgerührt, dann sollte es doch jetzt eigentlich…nope, wieder nix. Das Errorlog plärrt:
access to /var/www/vhosts/kolja-engelmann.de/httpdocs/blog failed, reason: SSL connection required
Der Pudel liegt hier in der Option SSLRequireSSL begraben und ist bekannt.
The issue is a quirk of how mod_spdy works: although the actual network connection to the client uses SSL encryption, the SPDY stream requests are handled internally using „virtual“ connections for which mod_ssl is disabled. Unfortunately, this means that mod_ssl thinks that these requests are not being served over SSL, so it denies access.
Nun, das bedeutet also, dass man momentan nur entweder SSL, oder SPDY nutzen kann, solange die Option
SSLRequireSSL
gesetzt ist. Also rasch die aktuelle vhost-config Datei unter
/var/www/vhosts/kolja-engelmann.de/conf
bearbeitet, die Option
SSLRequireSSL
gelöscht und den Webserver neu gestartet. Siehe da, im Chrome webbrowser kann man nach Eingabe der URL chrome://net-internals/#spdy erkennen, dass SPDY nun funktioniert.
Bleibt eigentlich nur noch Plesk (womit dieser Webserver konfiguriert wird) beizubringen nicht stets das
SSLRequireSSL
Flag zu setzen. Ich befürchte, dass mit der nächsten Konfigurationsänderung das nämlich wieder auftauchen wird. Also editiere ich die Datei /usr/local/psa/admin/conf/templates/default/domain/domainVirtualHost.php
in der das Grundgerüst für die vhost
Datei definiert wird und kommentiere die entsprechende Zeile aus.
Geschafft!