Seit heute Abend 19 Uhr erlaubt das von zahlreichen Organisationen und Unternehmen wie der Electronic Frontier Foundation oder Mozilla unterstützte Let’s-Encrpyt-Projekt das Ausstellen von kostenlosen SSL-Zertifikaten, ohne dass man sich vorher zu einem Beta-Test oder anderen Hürden anmelden müsste. Somit lassen sich Zertifikate für verschlüsselte HTTPS-Verbindungen für beliebige Domains ausstellen — ohne dass der Browser das Zertifikat beanstandet. Let’s Encrpyt bietet dabei ein Tool an, mit dem man sich die Zertifikate direkt über das Terminal auf den Webserver schaufeln kann, wenn man denn SSH-Zugriff auf das darunterliegende Linux-System besitzt. Allerdings lassen sich die Zertifikate auch manuell erstellen, sodass man sie zum Beispiel auch auf einem NAS-System nutzen kann. Ich spiele die Installation von Let’s Encrypt im Folgenden mit einem Arch Linux und einem NAS von Synology durch.

[yellow_box]UPDATE 22.01.2016: Dieser Artikel ist inzwischen veraltet, da Synology DSM 6.0 das Einbinden und Aktualisieren von Lets’s Encrypt-Zertifikaten out-of-the-box unterstützt. Wer eine halbwegs aktuelle Diskstation besitzt, sollte daher besser das System auf einen aktuellen Stand bringen, sodass DSM 6.0 läuft und sich dann an diese Anleitung halten: Mit DSM 6.0 Let’s Encrypt-Zertifikate auf Synology-NAS einrichten[/yellow_box]

Zum Erzeugen des Let’s-Encrpyt-Zertifikat holt ich euch den vom Projekt bereitgestellten Client auf den Rechner. Unter Arch Linux bekommt ihr das Programm schon aus den offiziellen Paketquellen, für Ubuntu hat zum Beispiel Thomas Leister bereits eine kleine Installationsanleitung geschrieben. Der Client fungiert als Schnittstelle zwischen eurem System und den Servern des Projekts. Er kann auch Zertifikate direkt im System installieren und in Apache einbinden. Für das Erstellen eines Zertifikats, das später einmal auf einem NAS landen soll, braucht man diese Funktionen allerdings gar nicht.

$ pacman -Ss letsencrypt
community/letsencrypt 0.1.0-1 [Installiert: 0.0.0.dev20151201-1]
    A tool to automatically receive and install X.509 certificates to enable TLS
    on servers. The client will interoperate with the Let’s Encrypt CA which
    will be issuing browser-trusted certificates for free.
community/letsencrypt-apache 0.1.0-1
    Apache plugin for Let’s Encrypt client
community/letsencrypt-nginx 0.1.0-1
    Nginx plugin for Let’s Encrypt client
community/letshelp-letsencrypt 0.1.0-1
    Let's help Let's Encrypt client
$ sudo pacman -S letsencrypt

Anschließend ruft ihr den Let’s-Encrpyt-Client mit Root-Rechten auf. Die Option certonly -a manual sorgt dabei dafür, dass der Client das Zertifikat nur erzeugt, aber nicht auch noch zu installieren versucht. In der Beta-Version musste man zudem noch mit etwa --server https://acme-v01.api.letsencrypt.org/directory der Server angeben, mit der heute veröffentlichten Version 0.1.0 des Clients ist diese Option nun nicht mehr nötig. Verzichtet ihr auf die Angabe einer Domain und einer E-Mail-Adresse wird euch das Programm nach diesen Angaben fragen, alternativ gibt ihr diese Infos dem Client gleich mit auf dem Weg.

### Ohne Optionen, Abfragen erfolgen in einer Ncurses-Oberfläche
$ sudo letsencrypt certonly -a manual
### Direkt mit allen Angaben
$ sudo letsencrypt certonly -a manual --email du@email.de -d domain.example.com

Voraussetzung für diese Aktion ist natürlich, dass euer NAS über HTTP und HTTPS aus dem Netz zu erreichen ist und dass ihr eine DynDNS-Adresse besitzt, unter der euer Netzwerkspeicher aus dem Internet zu erreichen ist. Eine Synology erfüllt diese Kriterien, wenn ihr unter Systemsteuerung | Externer Zugriff | DDNS ein entsprechendes Konto eines DynDNS-Anbieters einträgt (alternativ können diese Aufgabe aber auch Router wie eine Fritz!Box übernehmen und unter Systemsteuerung | Webdienste die Web Station als Dienst aktiviert und weiter unter die Option HTTPS-Verbindungen für Webdienste aktivieren setzt. Beachtet bitte auch, dass ihr mindestens die Ports 80 (für HTTP) und 443 (für HTTPS) von eurem Router auf das NAS weiterleitet müsst.

Auf dem NAS-System muss der Webserver mitsamt HTTPS-Erweiterung aktiv sein.
Auf dem NAS-System muss der Webserver mitsamt HTTPS-Erweiterung aktiv sein.

Weiter geht es mit der Zertifikat: Der Let’s-Encrpyt-Client versucht nun die angegebene Domain zu erreichen und zeigt euch bei Erfolg eine Adresse wie „http://domain.example.com/.well-known/acme-challenge/hierkommteinzufälligercode“ mitsamt einem langen kryptischen Code an. Diese URL mitsamt der damit verbundenen Datei dient zur Identifikation eures Webservers. Die Installations-Skripte des Clients könnten euch diese Aufgabe nun abnehmen, allerdings kann der Client mit eurem NAS-System nun natürlich weniger anfangen, daher müsst ihr diese Datei von Hand auf dem Webserver des NAS-Systems anlegen.

Der Let's-Encrypt-Client muss selbstverständlich die Domain kennen, für die er ein SSL-Zertifikat erzeugen soll.
Der Let’s-Encrypt-Client muss selbstverständlich die Domain kennen, für die er ein SSL-Zertifikat erzeugen soll.

Loggt euch also beispielsweise per Samba auf eurem NAS ein, wechselt in das Verzeichnis mit den Webdaten, erzeugt die Ordnerstruktur .well-known/acme-challenge (ja, der Punkt gehört da hin) und in diesem dann die Datei hierkommteinzufälligercode mitsamt dem länglichen String, den euch der Client ausgibt. Das ganze funktioniert natürlich in der Regel auch über die Weboberfläche des NAS-Systems. Zur Kontrolle könnt ihr danach einfach mal auf den Link klicken und ihn in einem Browser auf eurem Rechner öffnen — dazu muss natürlich die Namensauflösung der Internetdomain auch aus eurem lokalen Netzwerk heraus funktionieren. Zeigt dieser den Inhalt der Datei an, dann sollte alles funktionieren.

Die von Let's Encrypt angeforderte Authentifizierungs-Datei kann man auch direkt per Editor auf das NAS schaffen.
Die von Let’s Encrypt angeforderte Authentifizierungs-Datei kann man auch direkt per Editor auf das NAS schaffen.
Make sure your web server displays the following content at
http://domain.example.com/.well-known/acme-challenge/hierkommteinzufälligercode before continuing:

o6klFxce...diesercodedientzumidentifiziereneuresnas

If you don't have HTTP server configured, you can run the following
command on the target server (as root):

mkdir -p /tmp/letsencrypt/public_html/.well-known/acme-challenge
cd /tmp/letsencrypt/public_html
printf "%s" o6klFxce...diesercodedientzumidentifiziereneuresnas > .well-known/acme-challenge/o6klFxcezfKWMClYLxIw_HDJ1uPo268aZrtiaUpOtjg
# run only once per server:
$(command -v python2 || command -v python2.7 || command -v python2.6) -c \
"import BaseHTTPServer, SimpleHTTPServer; \
s = BaseHTTPServer.HTTPServer(('', 80), SimpleHTTPServer.SimpleHTTPRequestHandler); \
s.serve_forever()"
Press ENTER to continue

Liegt die Datei auf dem Webserver und habt ihr die Erreichbarkeit über den Browser geprüft, dann geht mit der Eingabe von [Enter] einen Schritt weiter. Die Let’s-Encrypt-Server rufen die Authentifizierungsdatei von eurem Webserver ab, kontrollieren sie auf Gültigkeit und stellen dann das für die angegebene Domain für 90 Tage gültige Zertifikat aus. Dieser landet dann automatisch unter /etc/letsencrypt/live/domain.example.com auf eurer Festplatte. Die begrenzte Gültigkeit begründet Let’s Encrypt mit erhöhter Sicherheit, da so verloren gegangene oder missbrauchte Zertifikate relativ schnell ihre Gültigkeit verlieren. Das Ziel sei es sowieso das Generieren der Zertifikate zu automatisieren, dann soll die Zeitspanne sogar noch weiter sinken.

IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at
/etc/letsencrypt/live/domain.example.com/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.

Für die Installation der Zertifikate auf einem Synology-NAS müsst ihr euch nun wieder in die Weboberfläche eures Netzwerkspeichers einloggen und (im Falle eines Synology-Systems) nach Systemsteuerung | Sicherheit | Zertifikat gehen. Dort wählt ihr die Option Zertifikat importieren und gebt die privkey.pem als privaten Schlüssel und die fullchain.pem als Zertifikat an. Damit ihr an diese Dateien kommt, müsst ihr sie allerdings erst einmal aus dem Ordner mit Root-Rechten rauskopieren, da nur Root Zugriff auf diese Dateien hat — und somit der Browser fehlende Rechte moniert. Ein Weg dies zu tun, wäre beispielsweise der Folgende, natürlich führen hier zahlreiche andere Wege zum selben Ziel.

$ sudo -s
# cd /etc/letsencrypt/live/domain.example.com/
# ls
cert.pem chain.pem fullchain.pem privkey.pem
# cp fullchain.pem privkey.pem /tmp
# exit
$ sudo chown $USER /tmp/*.pem

Am Ende meldet die Zertifikats-Verwaltung des Synology-NAS nun ein von der „Let’s Encrypt Authority X1“ signiertes SSL-Zertifikat. Die Gültigkeit beträgt wie gesagt 90 Tage, ihr solltet das Zertifikat vor Ablauf dieser Zeitspanne erneuern, wiederholt dazu einfache alle hier gezeigten Schritte. Aktuell führt daran kein Weg vorbei, hier müssen Synology und Co. aktiv werden und eine Funktion direkt in die Software der NAS-Geräte implementieren, über die sich Let’s-Encrypt-Zertifikate direkt aus dem System heraus erzeugen und Verwalten lassen. Die wird mit Sicherheit kommen — ich hoffe, dass die Hersteller dabei aber auch ältere Geräte nicht außen vor lassen. Noch ein Hinweis am Rande: Meldet das System ein von „Happy Hacker Fake CA“ ausgestelltes Zertifikat, dann seid ihr noch mit einem Beta-Client unterwegs.

Die per Let's-Encrypt-Client erzeugte kopiert ihr über das Webfrontend auf das Synology-NAS.
Die per Let’s-Encrypt-Client erzeugte kopiert ihr über das Webfrontend auf das Synology-NAS.
Nach der Installation der Zertifikate sollte das NAS nun ordentlich über HTTPS erreichbar sein.
Nach der Installation der Zertifikate sollte das NAS nun ordentlich über HTTPS erreichbar sein.
Happy-Hacker-Zertifikate meldet das System nur noch, wenn ihr mit einem veralteten Let's-Encrypt-Client arbeitet.
Happy-Hacker-Zertifikate meldet das System nur noch, wenn ihr mit einem veralteten Let’s-Encrypt-Client arbeitet.

//PS: Am Ende muss auch noch der von euch genutzte Browser das Zertifikat akzeptieren. Das wäre zum Testzeitpunkt mit Chrome 47.0 wie auch mit Chromium 47.0 der Fall. Beide Browser signalisieren über ein grünes „https://“ in der Adresszeile, dass mit dem Zertifikat alles stimmt. Firefox 42.0 hingegen und beispielsweise der in Gnome integrierte Browser stoßen sich jedoch weiterhin am Aussteller des Zertifikats und melden „This Connection is Untrusted“. Ironischerweise muss als noch Mozilla als einer der wichtigsten Platinum-Sponsoren seine Hausaufgaben machen, was allerdings mit Sicherheit bald geschehen wird.

Abonnieren
Benachrichtigungen:
guest
30 Kommentare
älteste
neuste
Inline Feedbacks
Zeige alle Kommentare
benediktg

Durch diese Anleitung dürften ja auch Mieter nur eines Webspace (also ohne Shell- oder gar Rootzugriff) in den Genuss dieser CA kommen, wenn ich das richtig verstehe.

benediktg

Danke für die Klarstellung.

Das mit der Automatisierung (so ist es ja wohl gedacht) geht ja eh einfacher auf einem Server mit Shell- oder Rootzugriff zu realisieren.

Jens Groh

Das ein oder andere Control Panel, das gerne von Shared Hostings eingesetzt wird, evaluiert schon geraume Zeit LetsEncrypt und will das auch direkt implementieren. Da gibt es gerade bei OpenSource Panels doch glücklicherweise einige Möglichkeiten 🙂

thies

Ich nutze mit Let’s Encrypt generierte Zertifikate bereits seit einiger Zeit auf all-inkl. Geht dort ab dem Tarif PrivatPlus.

Erstellt werden die Zertifikate lokal (die notwendigen Validierungsdateien werden mittels FTPS auf den Server kopiert). Upload und Aktivierung erfolgt mittels Skript, das deren KAS-Schnittstelle nutzt. Funktioniert wunderbar und voll automatisiert per Cron-Job. Ist also gar nicht mal zwingend notwendig, dass die Let’s Encrypt irgendwann direkt unterstützen, was aber vermutlich kommen wird und natürlich um einiges Benutzerfreundlicher wäre.

Ferdinand Thommes

Mit Iceweasel 38.4 geht’s hier.

Philip

Hey, danke für den Guide! Ich hab den mal zweckentfremdet für einen Apache 2.2 (letsencrypt kommt apache 2.2 nicht zurecht, mit 2.4 schon) 😛 Ich frage mich aber ob ich den Ordner für diese „ACME Challenge“ nachdem ich das zertifikat bekommen habe löschen sollte?

Sven

Hallo Christoph,

vielen Dank für die ausführliche Anleitung. Für mich stellt sich allerdings die Frage, ich habe vor der Syno noch eine Fritzbox.

Sollte ich auf der Fritzbox das Zertifikat auch einbinden? Die rufe ich zurzeit noch mit dem selbst generierten Zertifikat auf.

Hast du nicht Lust, hierfür auch noch eine kurze Anleitung zu schreiben? 🙂

Bei mir ist die Fritbox über https://sub.domain.tld erreichbar, die Syno zurzeit unter https://sub.domain.tld:5001 – irgendwie kapiere ich noch nicht ganz, ob nun beide Geräte das Let’s Encrypt Zertifikat benötigen, oder nur die Fritz?

VIELEN DANK schon mal für deine Hilfe!

Stefan

Bei mir gehts auch mit Firefox v 42.0.

Die Zertifikate sollten laut der FAQ https://community.letsencrypt.org/t/frequently-asked-questions-faq/26 von den meisten Browsern unterstützt werden.

Zitat von deren FAQ:
> Are certificates from Let’s Encrypt trusted by my browser?
>
> The short answer is “yes”.

Ludwig

Auf den Screenshots ist ein schön flaches GUI Theme zu sehen. Gefällt mir sehr gut. Wie heißt das Theme?

Christian

@Phillip: Du kannst den Ordner löschen, LetsEncrypt benötigt ihn nur kurz, um zu prüfen, ob die Datei mit dem zufälligen Code darin vorhanden ist. Danach braucht man den Ordner nicht mehr.

@Sven: Bist du dir sicher, dass hinter https://sub.domain.tld/ ein Webserver läuft (auf Port 443)?

Bei der FritzBox kann man nach meiner Meinung kein Zertifikat einbinden, hier existiert auch kein Webserver, wo man die benötigten Dateien ablegen kann.
Daher sollte ein Webserver auf der NAS mit Portweiterleitung der FritzBox auf 443 reichen, um den Ordner .well-known/achme-challenge abzurufen.

Gruß
Chris

Philip

Danke! 🙂

Sven

Ja, das ist das Web-Frontend von der Fritzbox. Nennt sich im Menü „Internet / Freigaben / Fritz!Box-Dienste“.

TCP-Port für HTTPS ist 443 zusätzlich kann man den Haken für „Internetzugriff auf die FRITZ!Box über HTTPS aktiviert“ setzen.

Weiter unten ist dann auch der Punkt „Zertifikat“ zu finden. Hier gibt es die Möglichkeit ein „Benutzereigenes Zertifikat“ hochzuladen.

Christian

Okay, welche FritzBox hast du denn? Das ist ein Feature, was ich selber nicht kenne 😀

Sven

7490, bei der 7390 kenne ich es auch.

Mario Kemper

Kurze Anmerkung. In live liegen nur Softlinks auf archive. Das kann, wenn man wie ich mit Windows als Zwischenstation kopiert, zu kaputten pem-Files führen.

Yves

Danke für den Hinweis, habe mir die Dateien per sftp kopiert und nicht bemerkt dass es nur Links waren

Pius Luszenko

Hallo,

unter Gentoo und Firefox 42 wird das Zertifikat nicht akzeptiert. Konqueror ebenfalls nicht. Nur unter Googles Chrome wird das Zertifikat akzeptiert.
Kann jemand etwas zur Windows-Version von Firefox sagen?

Liebe Grüße

Marco

Hey,
Danke für die ausführliche gute Anleitung. Ja jetzt Interesse ich mich auch für die Einbindung in der Fritz Box wie Sven.
Die 6360/6460 bietet auch die Möglichkeit eines eigenen Zertifikat
Zu finden unter Internet -> Freigabe -> Fritz Box Dienste

Gruß und danke

Marco

Paul

Möchte hier jetzt nicht spammen, doch der selbe Ansatz sollte auch mit einer Fritzbox funktionieren. Falls man kein NAS hat mal nen eigenen Webserver auf dem PC oder dem PI aufsetzen. (Würde ich versuchen, falls es klappt)
Jedoch muss man auch schauen, wie oft die Zertifikate erneuert werden müssen. Nicht dass man sich selbst aussperrt. 90 Day lifetime.

Jan

Hallo Christoph,

ich habe das Zertifikat seit der Pre-Beta ebenfalls erfolgreich auf der Synology im Einsatz und bin dabei ähnlich vorgegangen wie Du.

Anfangs hatte ich die fullchain.pem auf der Synology installiert und da stieß ich auch auf das Problem, dass einige Browser (wie z.B. Firefox) das Zertifikat nicht aktzeptierten.

Nachdem ich dann die fullchain.pem gegen die cert.pem ausgetausch hatte, läuft es mit allen Browsern.

Nur mal so als Hint…

Schöne Grüße,
Jan

Alexander

Hallo Christoph,

wenn du deine Domain unkenntlich machen willst, solltest du das auch durchgehend bei allen Screenshots machen. 🙂

Wurzelmann

Hallo!

Danke erstmal für die gute Anleitung, hat alles wunderbar funktioniert!

memorx

Will mich auch bedanken, hat wunderbar geklappt !

Schöne Fessttage!

MZman

Wer für Fritzbox seinen Zertifikat benutzen will muss einfach nach dem schritt Congratulations
einfach diesen Befehlt durchführen:

cat privkey.pem cert.pem > fritzbox.pem
chmod 777 fritzbox.pem

und dann in Intenet -> Freigaben -> Fritz!Box-Dienste importieren (ACHTUNG kein passwort benötigt für Zertifikat)

Have Fun!

basti

kleine anmerkung zu MZman,

man sollte lieber cat privkey.pem fullchain.pem > fritzbox.pem nutzen, sonnst gibs zbs unter android ein err_cert_authority_invalid

kugel

ich bekomme bei Let’s Encrypt crt-files.
die fritzbox schluckt das nicht, kann man die files konvertieren ?

lifesim
$ openssl pkcs12 -export -out cert.pfx -inkex private.key -in certificate.crt -certfile ca_bundle.crt 
$ openssl pkcs12 -in cert.pfx -out cert4fb.pem -nodes

hat bei mir geklappt

gruss

lifesim.de