Let’s Encrypt serverblogger.ch

Let's Encrypt – SSL Labs

Let's Encrypt – SSL Labs

Tadaa, es ist es soweit!

SSL/TLS Zertifikate, die von allen Browsern anerkannt werden, können nun kostenlos erstellt werden. Am 3. Dezember 2015 startete die öffentliche Beta-Phase der Let’s Encrypt Zertifizierungsstelle und in diesem Blogeintrag werde ich ein solches Zertifikat auf unserem Blogserver erzeugen und für die Domain serverblogger.ch einrichten.

Basissystem

Ich nutze einen virtuellen root Server aus dem aktuellen Novatrend Angebot und habe dort Linux Ubuntu 14.04 und einen LAMP Stack installiert. Die Domain serverblogger.ch zeigt auf einen virtuellen Host mit dieser Minimalkonfiguration:

<VirtualHost *:80>
  ServerName serverblogger.ch
  ServerAlias www.serverblogger.ch
  DocumentRoot /var/www/serverblogger.ch/public_html/
</VirtualHost>

Let’s encrypt verspricht eine automatisierte Einrichtung von Konfigurationsdateien des Apache Webservers.

Let’s Encrypt serverblogger.ch

Da das Let’s Encrypt Softwarepaket natürlich noch nicht in den Distributionspaketen von Ubuntu 14.04 vorhanden ist, muss es individuell installiert werden. Die einfachste Variante ist die Installation über Git/GitHub. Git ist eine freie Software zur verteilten Versionsverwaltung von Dateien und GitHub ist ein kommerzieller Dateihoster für Softwareprojekte. Dort hostet auch das Let’s Encrypt Projekt seinen Quellcode (https://github.com/letsencrypt).

Um die Dateien installieren zu können, muss zunächst Git installiert werden

sudo apt-get install git

Danach wird das Let’s Encryt Repository auf GitHub geklont

git clone https://github.com/letsencrypt/letsencrypt

Das sieht dann so aus

Cloning into 'letsencrypt'...
remote: Counting objects: 25238, done.
remote: Compressing objects: 100% (11/11), done.
remote: Total 25238 (delta 2), reused 0 (delta 0), pack-reused 25227
Receiving objects: 100% (25238/25238), 6.61 MiB | 4.86 MiB/s, done.
Resolving deltas: 100% (17693/17693), done.
Checking connectivity... done.
novatrend@server1:~$

Das Let’s Encrypt Softwarepaket wurde im Verzeichnis /letsencrypt installiert. Also wechsele ich in das Verzeichnis und rufe das Programm auf

cd letsencrypt

Das folgende Kommando ruft letsencrypt auf

sudo ./letsencrypt-auto

Das Script läd alle notwendigen Bibliotheken, meldet dann aber folgenden Fehler

InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning.

Letsencrypt ist in Python geschrieben und es fehlen offenbar noch ein paar Python Bibliotheken, die mit diesem beiden Befehl nachinstalliert werde können:

sudo apt-get install python-pip
sudo pip install pyopenssl ndg-httpsclient pyasn1

Die Installationsparameter kann man sich unter ./letsencrypt-auto –help ansehen.

Der Konfigurationsprozess wird mit diesem Befehl gestartet

./letsencrypt-auto

Die installierten virtuellen Hosts erscheinen zur Auswahl

Let's Encrypt - Domainauswahl
Let’s Encrypt – Domainauswahl

Es wird eine E-Mail Adresse als Ansprechpartner für die Wiederherstellung von Schlüssel und dringenden Benachrichtigungen verlangt. Die anzugebende E-Mail Adresse muss nicht bei einer der ausgewählten Domains sein.

Let's Encrypt - E-Mail Ansprechpartner
Let’s Encrypt – E-Mail Ansprechpartner

Die Geschäftsbedingungen müssen bestätigt werden. Hier der Link zum angezeigten PDF: https://letsencrypt.org/documents/LE-SA-v1.0.1-July-27-2015.pdf

Interessant in diesem Zusammenhang ist vermutlich dieser Satz:

The parties agree that the laws of the State of California govern this Agreement, irrespective of California’s choice of law and conflicts of law principles.

Let's Encrypt - Geschäftsbedingungen
Let’s Encrypt – Geschäftsbedingungen

Im letzten Fenster kann festgelegt werden, ob HTTP und HTTPS angeboten werden sollen oder der gesamte Verkehr über HTTPS abgewickelt werden soll.

Let's Encrypt - Auswahl ob HTTPS erzwungen werden soll (Ja)
Let’s Encrypt – Auswahl ob HTTPS erzwungen werden soll (Ja)

Das wars! Es erscheint ein Hinweis auf eine Testsite …

Let's Encrypt - Erfolg
Let’s Encrypt – Erfolg

und dieser Hinweis …

IMPORTANT NOTES:
 - If you lose your account credentials, you can recover through
   e-mails sent to hagen@novatrend.ch.
 - Congratulations! Your certificate and chain have been saved at
   /etc/letsencrypt/live/serverblogger.ch/fullchain.pem. Your cert
   will expire on 2016-03-03. To obtain a new version of the
   certificate in the future, simply run Let's Encrypt again.
 - Your account credentials have been saved in your Let's Encrypt
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Let's
   Encrypt so making regular backups of this folder is ideal.
 - If like Let's Encrypt, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

Auf der Testsite erscheint dann auch ein leuchtendes Grün und ein grosses A!

Let's Encrypt – SSL Labs
Let’s Encrypt – SSL Labs

Fazit:

Es ist einfach, es funktioniert und im Ergebnis hat man eine SSL/TLS abgesicherte Website. Das ist zunächst mal gut!

Der Haken an der Sache ist, dass man nun auch eine Art Backdoor unter kalifornischem Recht auf dem Server hat. Hierzu hat sich Felix von Leitner ein paar Gedanken gemacht (https://blog.fefe.de/?ts=a89f4ed6) und auch eine Lösung angeboten. Diese Website (https://gethttpsforfree.com/) bietet die Möglichkeit ein Let’s Encrypt Zertifikat zu erzeugen und zu nutzen ohne das Let’s Encrypt Python Softwarepaket.

Links:

Weitere Artikel zum Thema hier im Blog:


tl;dr: Es funktioniert! Ein kostenloses SSL-Zertifikat per Knopfdruck!

Autor: Hagen Graf

consultant, author, trainer, solution finder, web architect, developer, open source lover, visionary, orator, the good old webmaster. Able to simplify!

Kommentar verfassen