Benutzer-Werkzeuge

Webseiten-Werkzeuge


 [[anwenderwiki:server:ssl-tls-letsencrypt]] 
Diese Anleitung gilt für den neuen Client „Certbot“
Die Anleitung für die Vorgängerversion findet sich 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 <ADMINISTRATORADRESSE> -d <DOMAINNAME> -d <ZWEITER DOMAINNAME>

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.

 [[anwenderwiki:server:ssl-tls-letsencrypt]] anwenderwiki/server/ssl-tls-letsencrypt.txt · Zuletzt geändert: 2017/01/29 16:44 von 127.0.0.1