Let's Encrypt-Zertifikate manuell erzeugen
Seit wenigen Minuten befindet sich Let's Encrypt in der öffentlichen Beta-Phase. Das bedeutet, dass nun keine Einladung mehr benötigt wird, um sich dort ein kostenloses Zertifikat ausstellen zu lassen.
Installation von Let's Encrypt
Wer auf seinem Server nicht die Möglichkeit hat, Let's Encrypt zu installieren, oder dies aus Gründen nicht tun möchte, kann sich das Tool auch einfach lokal installieren. Ich habe die Installation bei mir lokal unter Ubuntu 15.10 (Wily Werewolf) durchgeführt.
Let's Encrypt muss zunächst aus dem GitHub-Repository geklont werden und bringt ein Installations-Skript mit, welches das Tool in einer virtuellen Umgebung (virtualenv
) installiert. Dadurch werden Abhängigkeiten zum Betriebssystem vermindert. Für die Installation werden root
-Rechte benötigt.
$ cd letsencrypt
$ ./letsencrypt-auto
Auf meinem System mussten zunächst noch die fehlenden Pakete augeas-lenses libaugeas0 python-chardet-whl python-colorama-whl python-html5lib-whl python-pip-whl python-requests-whl
python-setuptools-whl python-virtualenv python3-virtualenv virtualenv
nachinstalliert werden, das kann bei euch natürlich ganz anders aussehen. Danach wird die virtuelle Umgebung erzeugt und letsencrypt
installiert.
Manuelles Generieren
Standardmäßig ist Let's Encrypt anschließend so aufzurufen:
letsencrypt [SUBCOMMAND] [options] [-d domain] [-d domain] ...
[snip]
Idealerweise wird $HOME/.local/share/letsencrypt/bin
dem $PATH
hinzugefügt. Wenn ich das richtig sehe, kann aber genauso gut ./letsencrypt-auto --help
von oben ausgeführt werden, so steht es verwirrenderweise auch (noch?) in den Docs.
Um nun ein Zertifikat zu erhalten und gegebenenfalls auch gleich im Webserver zu installieren, bietet Let's Encrypt mehrere Plugins (z. B. für Apache, nginx) an. Da ich aber nur mein Zertifikat erhalten und es dann selbst installieren möchte, nutze ich den certonly
-Befehl:
Daraufhin muss zunächst eine E-Mail-Adresse angegeben, mit deren Hilfe man für Mitteilungen (Zertifikatserneuerung notwendig etc.) erreichbar ist. Sie könnte aber auch - zusammen mit einigen anderen Einstellungen - in einer Konfigurationsdatei /etc/letsencrypt/cli.ini
hinterlegt werden.
Im Anschluss werden die Domains abgefragt, für die das Zertifikat gelten soll. Danach fehlt nur noch ein Schritt, nämlich die manuelle Verifzierung. Aber NICHT sofort Enter drücken! Zunächst muss im Webroot auf dem Server einen Verifikationscode eingetragen werden, und zwar in der angegebenen Datei, die im Verzeichnis .well-known/acme-challenge/
liegen und natürlich öffentlich zugänglich sein muss:
http://my.domain.de/.well-known/acme-challenge/###LangerHash### before continuing:</p>
<h3 id="nochl-ngererhash-geshi-">NochLängererHash###
Das ist schnell gemacht, und JETZT kann Enter gedrückt werden, und die folgende Erfolgsmeldung erscheint:
/etc/letsencrypt/live/my.domain.de/fullchain.pem. Your
cert will expire on 2016-03-02. To obtain a new version of the
certificate in the future, simply run Let's Encrypt again.
insgesamt 8
drwxr-xr-x 2 root root 4096 Dez 3 19:52 .
drwx------ 3 root root 4096 Dez 3 19:52 ..
lrwxrwxrwx 1 root root 36 Dez 3 19:52 cert.pem -> ../../archive/my.domain.de/cert1.pem
lrwxrwxrwx 1 root root 37 Dez 3 19:52 chain.pem -> ../../archive/my.domain.de/chain1.pem
lrwxrwxrwx 1 root root 41 Dez 3 19:52 fullchain.pem -> ../../archive/my.domain.de/fullchain1.pem
lrwxrwxrwx 1 root root 39 Dez 3 19:52 privkey.pem -> ../../archive/my.domain.de/privkey1.pem
Zertifikat installieren
In meinem Fall zeigt die Domain auf einen Uberspace, und dort muss auch das Zertifikat hin. Rechtzeitig zur Public Beta von Let's Encrypt haben die Ubernauten etwas vorbereitet.
Update 09.12.2015: Ich sehe gerade, in diesem Blogpost haben die Leute von Uberspace alles detailliert erklärt, so dass ihr die folgenden Schritte (und genau genommen auch alle bisherigen) ignorieren könnt - wenn eure Domain bei Uberspace liegt!
Zunächst müssen privkey1.pem
und cert1.pem
auf den Server kopiert werden (die Dateien, nicht die Symlinks!), und zwar dort nicht in das Webroot, sondern am besten nach ~/certs
oder ähnlich. Dann per ssh
auf euren Uberspace wechseln und nach
$ uberspace-prepare-certificate -k privkey1.pem -c cert1.pem
Found key...
Found certificate...
Key seems valid, moving on...
Certificate seems valid, moving on... (step by step)
Certificate matches key, moving on... (we're getting there!)
Magically getting intermediate certificate(s) if there are any needed... (hold on tight)
Checking for my.domain.de.
temporary webserver started...
certificate is valid.
killed temporary webserver...
The Certificate is already configured (seems to be an update).
All good! Your new certificate will be live within the next five minutes.
und einer kurzen Wartezeit ist eure Webseite sicher per TLS aufrufbar!
Der hier beschriebene manuelle Weg ist zwar sicherlich einer der umständlichsten, aber er funktioniert. Korrekturen, Verbesserungsvorschläge und Optimierungen bitte in die Kommentare oder in euren eigenen Blogpost. Ich freue mich über jedes Feedback!
Kommentare
Ansicht der Kommentare: Linear | Verschachtelt