{{tag>server ssl tls Zertifikate ldap apache e-mail cyrus}}
Diese Anleitung gilt für den neuen Client "Certbot"\\
Die Anleitung für die Vorgängerversion findet sich [[anwenderwiki:server:ssl-tls-letsencrypt-alt|hier]].
\\
====== Von Let's Encrypt signierte SSL/TLS-Zertifikate für Apache, Ldap und E-Mail verwenden ======
===== 1. Client installieren =====
Für Ubuntu 12.04 ist der Certbot-Client noch nicht in den Paketquellen von Ubuntu enthalten, daher muss man ihn manuell herunterladen und installieren:
wget https://dl.eff.org/certbot-auto
chmod 0700 certbot-auto
mv certbot-auto /usr/local/sbin
===== 2. Programmumgebung einrichten und erstes Zertifikat erzeugen =====
Nun kann das erste Zertifikat erzeugt werden. Certbot prüft bei jedem Aufruf die Installation und lädt bei Bedarf fehlende oder veraltete Pakete herunter, beim ersten Aufruf darf man sich also über diesbezügliche Meldungen nicht wundern.
Wenn der Server unter mehreren Namen erreichbar sein soll, dann muss man die alle angeben, es wird ein einziges Zertifikat erzeugt, das für alle diese Servernamen gültig ist. Wichtig ist, dass der Server unter allen diesen Namen aus dem Internet erreichbar ist, weil Certbot überprüft, ob man auch Kontrolle über diese Server hat. Außerdem muss man eine E-Mail-Adresse angeben.
certbot-auto certonly --apache --email -d -d
Hier ein Beispiel:
certbot-auto certonly --apache --email administrator@meineschule.de -d server.meineschule.de
Sollen die Zertifikate mit einem längeren RSA-Schlüssel erstellt werden, so kann in o. g. Befehlszeile die Option
--rsa-key-size 4096
angegeben werden. Ohne diese Angabe wird der Schlüssel mit 2048 Bit erstellt.
Das erstellte Zertifikat befindet sich jetzt in Ordnern unterhalb von ''/etc/letsencrypt''.
===== 3. Zertifikat aktivieren =====
=== Einmalig: Apache-Konfiguration anpassen ===
Manche ältere Clients benötigen einen zusätzlichen Eintrag in der Apache-Konfiguration. Die erforderliche Option ''SSLCertifikateChainFile'' ergänzt man in der Konfigurationsdatei für jeden Vhost, der das Zertifikat verwenden sollen. Bei einer Standardinstallation editiert man dazu nur die Datei ''/etc/apache2/sites-available/default'' (und eventuell ''/etc/apache2/sites-available/schulkonsole''):
# Schon vorhanden
SSLCertificateFile /etc/ssl/private/server.pem
SSLCertificateKeyFile /etc/ssl/private/server.pem
# Diese Option ergänzen
SSLCertificateChainFile /etc/ssl/private/server.pem
# Optional: Let's-Encrypt-Einstellungen für sicheres HTTPS:
Include /etc/letsencrypt/options-ssl-apache.conf
Wer möchte, kann wie im Beispiel von Let's-Encrypt vorgeschlagene Einstellungen zur Absicherung von Https aktivieren.
=== Zertifikat kopieren ===
Das Zertifikat liegt noch nicht in der erforderlichen Form vor und ist auch noch nicht an der richtigen Stelle gespeichert. Dazu erzeugt man ein Skript ''/usr/local/sbin/letsencrypt-renew-posthook'' mit folgendem Inhalt:
# /usr/local/sbin/letsencrypt-renew-posthook
SRCDIR=/etc/letsencrypt/live/server.meineschule.de
TARGETDIR=/etc/ssl/private
echo
echo "Sichere altes Zertifikat"
cp -a $TARGETDIR/server.pem $TARGETDIR/server.pem_$(date +%Y%m%d.%H:%M)
echo
echo "Kopiere neues Zertifikat nach $TARGETDIR"
cat $SRCDIR/privkey.pem > $TARGETDIR/server.pem
cat $SRCDIR/cert.pem >> $TARGETDIR/server.pem
cat $SRCDIR/chain.pem >> $TARGETDIR/server.pem
chmod 0640 $TARGETDIR/server.pem
chown root:ssl-cert $TARGETDIR/server.pem
echo "Starte Dienste neu"
service apache2 restart
service slapd restart
service cyrus-imapd restart
echo "Fertig"
echo
echo "Die Let's-Encrypt-Zertifikate wurden erfolgreich erneuert." | mail -s "Zertifikate erneuert" administrator
exit 0
Den Ordner "SRCDIR" muss man ganz oben in der Datei anpassen. Danach ruft man das Skript einmalig per Hand auf, später wird das automatisch erledigt.
===== 4. Automatische Erneuerung des Zertifikats per Cronjob =====
Das Zertifikat von Let's Encrypt ist für 90 Tage gültig. Folgender Cronjob sorgt für die automatische Erneuerung:
# Let's-Encrypt-Zertifikate erneuern
22 22 * * * root /usr/local/sbin/certbot-auto renew --no-self-upgrade --post-hook "/usr/local/sbin/letsencrypt-renew-posthook"> /var/log/letsencrypt.log 2>&1 || cat /var/log/letsencrypt.log | mail -s "Fehler beim Erneuern der Zertifikate von Let's Encrypt!" administrator
Mit dem Befehl ''renew'' überprüft Certbot, ob das Zertifikat demnächst ausläuft. Ist dies der Fall, so wird das Zertifikat erneuert und anschließend das Skript aufgerufen, das das neue Zertifikat aktiviert.