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
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.
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.
Im letzten Fenster kann festgelegt werden, ob HTTP und HTTPS angeboten werden sollen oder der gesamte Verkehr über HTTPS abgewickelt werden soll.
Das wars! Es erscheint ein Hinweis auf eine Testsite …
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!
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:
- Zertifikate, SSL, TLS und HTTPS – ein Crashkurs
- Virtuelle Apache Hosts mit TLS/SSL Zertifikaten von StartSSL absichern
- Ein SSL/TLS Zertifikat für ihr Webhosting Paket
- Natürlich wird es kostenlose SSL/TLS Zertifikate geben – auch bei uns 🙂
tl;dr: Es funktioniert! Ein kostenloses SSL-Zertifikat per Knopfdruck!
Schreibe einen Kommentar