Diese Anleitung ist nicht mehr aktuell. Bitte beachten Sie meine aktualisierte Anleitung!

Ich habe bereits einen kurzen Beitrag über Let’s Encrypt geschrieben, um auf die offene Beta, die seit dem 03. Dezember aktiv ist, hinzuweisen. Dort sind viele Informationen zu finden, die man über Let’s Encrypt wissen sollte – mittlerweile ist sogar Facebook als Sponsor eingestiegen.

Heute möchte ich zeigen, wie man die neuen SSL-Zertifkate auf einem Debian- oder Ubuntu-Server beantragt und konfiguriert.

Auch wenn das Projekt für alle zugänglich ist, kann es hier und da noch zu Problemen kommen – das Projekt befindet sich noch immer in der Beta-Phase!

Für etwaige Schäden übernehme ich keine Haftung. Nicht abtippen, sondern verstehen!

Diese Anleitung habe ich erfolgreich auf Debian 8 (Jessie) in Verbindung mit nginx 1.9.7 getestet.

Let’s Encrypt hat ein offenes Protokoll namens ACME entwickelt, das der Kommunikation mit den CA-Servern dient. Es gibt, neben dem offiziellen Client, auch diverse Eigenentwicklungen, ich möchte heute aber nur auf den offiziellen Client eingehen.

Client installieren

Die Installation des ACME-Clients erfolgt, dank Git, spielend leicht:

cd /opt git clone https://github.com/certbot/certbot cd letsencrypt

Nach der „Installation“ initialisieren wir den Client und installieren die Abhängigkeiten vollautomatisch. Hierfür genügt ein Aufruf von

./letsencrypt-auto

ohne Parameter.

Zertifikate beantragen

Es gibt verschiedene Möglichkeiten, die Domain-Inhaberschaft zu bestätigen. Wir nutzen heute den standalone-Webserver des Tools, weshalb wir im Vorfeld unseren Webserver kurz abschalten müssen.

service apache2 stop service nginx stop

Ist das erledigt, beantragen wir unser Zertifikat wie folgt:

./letsencrypt-auto certonly --rsa-key-size 4096 -d dominicpratt.de -d www.dominicpratt.de

Man kann natürlich auch einige Optionen weglassen (z.B. die www-Subdomain) oder weitere Subdomains hinzufügen.

certonly: diese Option nutzen wir, damit die ausgestellten Zertifikate nur gespeichert werden, aber der genutzte Webserver nicht automatisch konfiguriert wird. Dies sollte man besser per Hand erledigen – man kann natürlich aber die entsprechende „apache2“ oder „nginx“-Option nutzen – mehr hierzu in der Client-Dokumentation.

–rsa-key-size: hier legen wir die Länge des RSA Private Key auf 4096 Bit, statt den standardmäßig verwendeten 2048 Bit, fest.

-d: hier folgen die Domains, für die das beantragte Zertifikat gelten soll – in diesem Fall „dominicpratt.de“ und „www.dominicpratt.de“. Man kann hier natürlich auch noch weitere Subdomains, wie „mail.dominicpratt.de“, angeben.

Nach der Beantragung erhalten wir die nötigen Zertifikatsdateien vom ACME-Server, die in /etc/letsencrypt/live/{domain} abgelegt werden. Schauen wir dort nach den Files, finden wir:

cert.pem (das eigentliche Zertifikat)

chain.pem (Zertifikat inkl. Zwischenzertifikate)

fullchain.pem (zusammengefügt aus cert.pem und chain.pem)

privkey.pem (Privater Key)

Der private Key muss unbedingt privat bleiben, dieser darf niemals an die Öffentlichkeit gelangen!

Das war der komplette Beantragungsvorgang – mehr gibt es hier nicht zu tun!

Konfiguration der Services

So ziemlich jeder Service verlangt seine Zertifikate in einer anderen Form – aber mit den von Let’s Encrypt angelegten Dateien sollte jeder Anwendungsfall abgedeckt sein.

Gerne füge ich Beispiele für weitere Dienste hinzu! Kommentieren Sie einfach, welchen Dienst Sie sich wünschen!

Apache-Webserver (ab 2.4.8)

SSLEngine on SSLCertificateFile /etc/letsencrypt/live/{domain}/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/{domain}/privkey.pem

Apache-Webserver (unter 2.4.8)

SSLEngine on SSLCertificateFile /etc/letsencrypt/live/{domain}/cert.pem SSLCertificateChainFile /etc/letsencrypt/live/{domain}/chain.pem SSLCertificateKeyFile /etc/letsencrypt/live/{domain}/privkey.pem

nginx-Webserver

ssl_certificate /etc/letsencrypt/live/{domain}/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/{domain}/privkey.pem;

Dovecot-IMAP

ssl_cert = </etc/letsencrypt/live/{domain}/fullchain.pem ssl_key =

Postfix

smtpd_tls_cert_file = /etc/letsencrypt/live/{domain}/fullchain.pem smtpd_tls_key_file = /etc/letsencrypt/live/{domain}/privkey.pem smtp_tls_cert_file = /etc/letsencrypt/live/{domain}/fullchain.pem smtp_tls_key_file = /etc/letsencrypt/live/{domain}/privkey.pem

Automatische Erneuerung (Renewal)

Die Zertifikate von Let’s Encrypt laufen schon nach 90 Tagen aus. Ob diese Entscheidung der CA nun Sinn macht oder nicht, sei mal dahin gestellt – wir erledigen den Renewal vollautomatisch per Crontab:

0 0 1 */2 * /opt/letsencrypt/letsencrypt-auto certonly --config /opt/letsencrypt/cli.ini --webroot -w /var/www/html/ -d dominicpratt.de -d www.dominicpratt.de

Inhalt der /opt/letsencrypt/cli.ini:

agree-tos renew-by-default = True

Danach sollte man natürlich noch ein Reload der betroffenen Dienste einfügen – das lasse ich nun aber an dieser Stelle mal offen.

Fazit

Gerne installiere und konfiguriere ich Ihre SSL-Umgebung – kontaktieren Sie mich!

Die Nutzung von Let’s Encrypt ist erfreulich einfach – alle benötigten Dateien werden geliefert, man muss sich nicht seine eigenen Chains zusammenbauen und kann die Files einfach direkt in die Dienste einfügen.

Durch Let’s Encrypt fällt so ziemlich jede Hürde, SSL einzusetzen: es ist kostenlos, einfach zu beantragen und noch einfacher zu nutzen.