Skip to content

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.

$ git clone https://github.com/letsencrypt/letsencrypt
$ 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:

$ sudo $HOME/.local/share/letsencrypt/bin/letsencrypt --help
  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:

$ letsencrypt certonly --manual

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:

Make sure your web server displays the following content at
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:

Congratulations! Your certificate and chain have been saved at
   /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.

$ sudo ls -al /etc/letsencrypt/live/my.domain.de
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

$ cd certs
$ 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!

Trackbacks

Netz - Rettung - Recht am : SSL/TLS mit Let's Encrypt

Vorschau anzeigen
Bereits vergangene Woche berichtete ich von meinen Irrungen und Wirrungen des letzten Jahrzehnts mit SSL/TLS im Web. Erst Ende 2015 hatte ich mich aufgerafft, über StartCom für einige Domains Zertifikate erstellen zu lassen, und parallel die Berichterstat

Kommentare

Ansicht der Kommentare: Linear | Verschachtelt

Noch keine Kommentare

Kommentar schreiben

Markdown-Formatierung erlaubt
Wenn Du Deinen Twitter Namen eingibst wird Deine Timeline in Deinem Kommentar verlinkt.
Bewirb einen Deiner letzten Artikel
Dieses Blog erlaubt Dir mit Deinem Kommentar einen Deiner letzten Artikel zu bewerben. Bitte gib Deine Blog URL als Homepage ein, dann wird eine Auswahl erscheinen, in der Du einen Artikel auswählen kannst. (Javascript erforderlich)
Standard-Text Smilies wie :-) und ;-) werden zu Bildern konvertiert.
Die angegebene E-Mail-Adresse wird nicht dargestellt, sondern nur für eventuelle Benachrichtigungen verwendet.

Um maschinelle und automatische Übertragung von Spamkommentaren zu verhindern, bitte die Zeichenfolge im dargestellten Bild in der Eingabemaske eintragen. Nur wenn die Zeichenfolge richtig eingegeben wurde, kann der Kommentar angenommen werden. Bitte beachten Sie, dass Ihr Browser Cookies unterstützen muss, um dieses Verfahren anzuwenden.
CAPTCHA

Formular-Optionen

Kommentare werden erst nach redaktioneller Prüfung freigeschaltet!