Vserver certbot

Die Verbreitung von mit SSL verschlüsselten Websiten nimmt zu, eine sehr gute Sache. Mit einer SSL verschlüsselten Website ist der Traffic zwischen Server und Client verschlüsselt und kann nicht ohne weiteres abgehört werden. Seit geraumer Zeit werden von der Organisation Let's Encrypt kostenlose SSL Zertifikate angeboten. In diesem Artikel beschreiben wir, wie ein solches installiert werden kann. Dafür nutzen wir einen Debian 8 Jessie vServer welcher eine standard nginx bzw. Apache Konfiguration aufweist.

Nano installieren

Als erstes muss nano installiert werden. Nano ist ein einfach bedienbarer Editor. Dieser wird in diesem Artikel genutzt, um Konfigurationsdateien anzupassen:

apt-get update && apt-get install -y nano

Eine Anleitung zur Verwendung von nano sehen Sie hier.

Paketquellen ergänzen

Öffnen Sie mit nano die sources.list und fügen Sie am ende dieser Datei folgende Quelle hinzu:

nano /etc/apt/sources.list

deb http://ftp.debian.org/debian jessie-backports main

Certbot installieren

Danach kann der certbot von der frisch hinzugefügten Quelle installiert werden:

Wenn Sie Nginx als Webserver verwenden: apt-get update && apt-get install -y certbot -t jessie-backports

Wenn Sie Apache als Webserver verwenden: apt-get update && apt-get install -y python-certbot-apache -t jessie-backports

Zertifikat erzeugen

Nun sind wir bereits soweit, dass wir das erste Zertifikat erstellen können. Dafür müssen wir jedoch zuerst sicherstellen, dass unsere Domain/Website korrekt funktioniert. In diesem Fall wird die Subdomain "cert.benhosting.org" genutzt. Die von Ihnen verwendete Domain/Subdomain muss zwingend auf den verwendeten Server zeigen. Andernfalls schlagen die nötigen Verifikationen vom Certbot fehl. Zudem müssen wir uns über das korrekte Webroot versichern, dieses wird zur Verifikation zwingend benötigt. Bei der standard nginx Konfiguration ist dies /var/www/html. Das Zertifikat wird mit folgendem Befehl erstellt:

certbot certonly --webroot -w /var/www/html -d cert.benhosting.org

Sie werden aufgefordert eine E-Mail Adresse anzugeben. Diese ist notwendig, um im Falle eines ablaufenden Zertifikats erinnert zu werden.

Certbot email.png

Danach müssen Sie noch den Bedingungen von Let's Encrypt zustimmen.

Certbot terms.png

Nach dem erfolgreichen generieren des Zertifikats erhalten Sie folgenden Bildschirm:

Certbot summarty.png

Nginx konfiguieren

Nun passen wir die Konfiguration von nginx an. Diese muss so angepasst werden, dass unverschlüsselter Traffic auf Port 80 auf verschlüsselt sprich Port 443 forwarded wird. Dies geschieht mit einem 301 forward. Zudem muss der virtuelle Server für verschlüsselten Traffic konfiguiert werden:

nano /etc/nginx/sites-available/default

Die standard Konfiguration sieht wie folgt aus:

Nginx standard.png

Um das Zertifikat zu installieren sind folgende Änderungen notwendig. Die Änderungen fügen zu einem SSL Server mit dem Let's Encrypt cert auf Port 443 + 301 forward auf Port 80:

Nginx ssl.png

Nun funktioniert das Zertifikat prinzipiell schon. Der nginx Server muss mit folgendem Befehl neugestartet werden:

/etc/init.d/nginx restart


Chrome ssl.png

Erweiterte Nginx Konfiguration

Diese Lösung ist jedoch noch nicht "perfekt". Es werden z.B. heute als unsicher geltende Protokolle zugelassen etc. Um dies zu umgehen (und zusätzlich in SSL Rankings höher dazustehen) sind einige weitere Parameter in der Konfiguration notwendig. Zudem sorgen wir für eine sicherere DH Abwicklung. Dafür muss zuerst ein Schlüssel erzeugt werden:

cd /etc/ssl/certs && openssl dhparam -out dhparam.pem 4096

Danach kann die Konfiguration von nginx mit nano ergänzt werden:

nano /etc/nginx/sites-available/default

Nginx ssl param.png

Hier finden Sie die vollständige Konfiguration: http://wiki.benhosting.org/data/nginx

Danach muss der nginx erneut neugestartet werden:

/etc/init.d/nginx restart

Apache konfigurieren

Um Apache zu konfigurieren reicht es den folgenden Befehl zu verwenden:

certbot --apache

Nun geben wir im Assistenten erneut unseren Domain/Subdomain ein und bestätigen mit Ok.

Da wir bereits ein Zertifikat erstellt haben wird der Assistent uns fragen ob wir das bereits bestehende verwenden wollen, wir akzeptieren deshalb die erste Option (Bestehendes verwenden) und bestätigen wieder mit Ok.

Nun wird uns der Assistent fragen ob wir alle nutzer zwingen wollen SSL zu verwenden oder nicht. Wählen Sie bitte die gewünschte Option. Wir bestätigen wieder mit Ok.

Nun sollte die Installation in Apache erfolgreich gewesen sein.

Testen des Zertifikats

Wir können das Zertifikat entweder durch einfach es aufrufen der so eben "zertifizierten" Website im Browser, oder mithilfe der folgenden Website testen:

https://www.ssllabs.com/ssltest/analyze.html