R3s1stanc3

Ich bin root, ich darf das!

Nginx + SPDY Unter Debian 6

Da ich selbst einige Schwierigkeiten hatte, nginx mit dem SPDY Patch auf meinem Server zu compilen, werde ich hier eine kleine Anleitung dazu schreiben:

Da Debian 6 nur stable Software über die Paketquellen ausliefert, erhält man via

1
apt-get install openssl

nur die OpenSSL Version 0.9. SPDY benötigt aber Version 1.0.1 oder höher.

Nun hat man 2 Möglichkeiten: entweder, man holt sich den Sourcecode und compiled OpenSSL 1.0.1 manuell, oder man weißst Debian an, neuere Pakete zu benutzen. Zweiteres habe ich gemacht:

Als erstes editiert man die /etc/apt/sources.list mit dem Editor seiner Wahl und fügt irgendwo folgenden Eintrag ein:

1
deb http://ftp.de.debian.org/        testing main contrib non-free

Damit ist es möglich, auch testing Versionen von einer Software herunter zu laden.

Als nächstes erstellt man die Datei /etc/apt/preferences mit folgendem Inhalt:

1
2
3
4
5
6
7
Package: *
Pin: release a=stable
Pin-Priority: 900

Package: *
Pin: release a=testing
Pin-Priority: 400

Nun erstmal ein

1
apt-get update

und gleich dannach

1
apt-get install -t testing openssl

Wenn das abgeschlossen ist, kann man mit

1
openssl version

überprüfen, welche OpenSSL Version installiert ist. Diese sollte jetzt 1.0.1 oder höher sein.

Andere Pakete die noch installiert sein müssen sind

1
build-essential libpcre3-dev libssl-dev libbz2-dev

Jetzt kann man sich den nginx Code runterladen, entpacken, in den entpackten Ordner wechseln und den SPDY Patch runterladen und in den Code Patchen:

1
2
wget http://nginx.org/patches/spdy/patch.spdy.txt
patch -p0 < patch.spdy.txt

Dann nur noch configure ausführen, wobei die Option –with-http_ssl_module unbedingt notwendig ist:

1
2
3
./configure --with-http_ssl_module
make
make install

Und fertig ist nginx.

Jetzt muss nur noch die Config angepasst werden, dass SPDY auch benutzt wird:

1
2
3
4
5
6
7
8
server {
    listen 443 ssl spdy;

    ssl_certificate      server.crt;
    ssl_certificate_key  server.key;

    ...
}

und falls noch nicht geschehen ein Key erzeugt werden:

1
2
3
4
5
openssl genrsa -des3 -out server.key 1024
openssl req -new -key server.key -out server.csr
cp server.key server.key.bak
openssl rsa -in server.key.bak -out serevr.key
openssl x509 -req -days 365 -in server.csr -signkey server.key -out test.in.crt

Eventuell muss in der Config dann noch der Pfad zu den Schlüsseln angepasst werden und dann ist der Server über https zu erreichen und benutzt SPDY.