Kostenlose Zertifikate LetsEncrypt
LetsEncrypt bietet seit einigen Jahren kostenlose Zertifikate an, die in allen Browsern validiert werden können. Damit ist die Zeit der selbstsignierten Zertifikate und der Pseudo-Sicherheit von CACert endlich vorbei.
Ziel von LetsEncrypt ist eine automatische Aktualisierung der Zertifikate. Deshalb laufen diese auch alle 3 Monate ab. Es muss deshalb aber niemand vor der Nutzung zurückschrecken, denn die Automatisierung ist mit minimalen Eingriffen ins System möglich.
1. Voraussetzungen
Als erstes gilt es, die Voraussetzungen zu schaffen. Dazu aktualisieren wir das System und installieren den Client CertBot:
# apt update # apt -y upgrade # apt -y install certbot
Wer die neueste Version von CertBot nutzen möchte oder eine Linux-Vatiante ohne CertBot-Pakete nutzt, kann natürlich auch per GIT installieren.
2. Konto erstellen
Im ersten Schritt erstellen wir ein Benutzerkonto:
# certbot register
Während der Registrierung werden die Einwilligung zur Lizenz, die eigene E-Mail-Adresse und eine optionale Newsletter-Anmeldung abgefragt.
3. Einstellungen
Es lohnt sich, einige Standard-Einstellungen zu hinterlegen, um Befehle auf der Konsole kurz zu halten. Dazu legen wird die Datei /etc/letsencrypt/cli.ini
an.
Passen Sie auf jeden Fall Ihre E-Mail-Adresse an! Die letzten 4 Optionen (hsts
, redirect
, uir
und staple-ocsp
) sind optional, sollten aber aktiviert werden, sofern die eingesetzten Serverdienste sie unterstützen.
# This is an example of the kind of things you can do in a configuration file. # All flags used by the client can be configured here. Run Certbot with "--help" to learn more about the available options. # # Note that these options apply automatically to all use of Certbot for # obtaining or renewing certificates, so options specific to a single # certificate on a system with several certificates should not be placed # here. # default keysize rsa-key-size = 4096 # default email address to register all certs to email = [email protected] # always agree to tos agree-tos # don't want eff newsletter no-eff-email # force all clients to use https hsts redirect uir staple-ocsp
4. Zertifikate anfordern
Nun können Zertifikate angefordert werden. Ein Beispiel für meine Domain lautet:
# certbot certonly --webroot --webroot-path /var/www/heikorichter/ -d heikorichter.name -d www.heikorichter.name
Die Verifizierung erfolgt durch eine Datei, die CertBot im Root-Verzeichnis des Webservers ablegt, damit sie durch die LesEncrypt-Server abgerufen werden kann. Der Parameter --webroot-path
muss also zwingend auf das korrekte Verzeicnis zeigen!
Nach erfolgreicher Verifizierung des Servers stellt CertBot die erstellten Zertifikate im Verzeichnis /etc/letsencrypt/live
zur Verfügung:
/etc/letsencrypt/live/heikorichter.name/fullchain.pem
Diese Datei enthält das Zertifikat (ohne privaten Schlüssel) und die Zertifikate der zuständigen Zertifizierungsstellen. Diese Datei sollte bei allen Diensten als Speicherort für den öffentlichen Schlüssel angegeben werden./etc/letsencrypt/live/heikorichter.name/cert.pem
und/etc/letsencrypt/live/heikorichter.name/chain.pem
Diese beiden Dateien enthalten das gleiche, wie fullchain.pem, aber auf zwei Dateien aufgetrennt. In cert.pem liegt nur das Zertifikat, in chain.pem liegen die Zertifikate der Zertifizierungsstellen. Einige wenige (meist veraltete) Serverdienste wollen diese Informationen in zwei verschiedenen Dateien haben./etc/letsencrypt/live/heikorichter.name/privkey.pem
Hier liegt der private Schlüssel zum Zertifikat.
5. Zertifikate installieren
Nun gilt es, die Zertifikate auf den Serverdiensten zu installieren. Das funktioniert für jeden Dienst anders. Für den äußerst beliebten Webserver Apache sieht die Konfiguration z.B. so aus:
<VertualHost *:443> ServerName heikorichter.name ServerAlias www.heikorichter.name DocumentRoot /var/www/heikorichter SSLEngine on SSLCertificateFile /etc/letsencrypt/live/heikorichter.name/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/heikorichter.name/privkey.pem </VirtaulHost>
Nach dem Anpassen der Konfiguration muss der Dienst natürlich neu gestartet bzw. neu geladen werden. Hier wieder am Beispiel von Apache:
# service apache2 reload
6. Zertifikate aktualisieren
Wie bereits zuvor erwähnt, laufen die Zertifikate alle 3 Monate ab. Daher muss ein Cronjob eingerichtet werden, der die Zertifikate automatisch aktualisiert. Dazu erstellen wir die Datei /etc/cron.d/certbot, die die entsprechende Anweisung enthält:
40 3 * * * root certbot renew --non-interactive --quiet --deploy-hook /etc/letsencrypt/deploy
Cron wird den Befehl täglich ausführen, CertBot wird aber nur die Zertifikate aktualisieren, die noch weniger als eine Woche gültig sind.
7. Zertifikate automatisch installieren
Nach einer automatischen Aktualisierung der Zertifikate, müssen diese natürlich auch den Serverdiensten bekannt gemacht werden. Das erfolgt über ein Bash-Script, das im zuvor erstellen Cronjob über den Parameter --deploy-hook /etc/letsencrypt/deploy
verlinkt ist:
#!/bin/bash service apache2 reload service postfix reload service dovecot reload service proftpd reload
Es handelt sich um ein minimales Script, das lediglich Dienste anweist, ihre Konfiguration neu zu laden. Natürlich muss das Script entsprechend angepasst werden, damit die korrekten Dienste angesprochen werden.
Leave a Comment
Du musst angemeldet sein, um einen Kommentar abzugeben.