LetsencryptSetup

Einrichtung kostenloser SSL-Zertifikate von https://letsencrypt.org/ für den Webserver apache2.

Auswahl des ACME-Clients

Für automatisierte "Let's Encrypt"-Zertifikate braucht man einen ACME-Client. Der standardmäßig vorgeschlagene Certbot-Client hat allerdings gewisse Nachteile:
  1. Er ist primär für die automatische Verwendung gedacht und die manuelle Nutzung ist unnötig aufwendig
  2. Er setzt eine Python-Installation voraus, was aus Sicherheitsgründen nicht immer sinnvoll ist
Es gibt zwei wesentliche Alternativen:
  • acme.sh - Kompatibel zu bash, dash und sh, liegt jedoch nicht als Debian-Paket vor (Stichwort Sicherheitspatches)
  • dehydrated - Kompatibel zu bash und zsh, liegt ab Debian 9 als Paket vor

Und die Wahl ist gefallen auf: dehydrated, wegen Debian-Sicherheits-Support und einfacherer Installation

Installation

apt-get install dehydrated

Hilfreiche Anleitung: https://github.com/mailcow/mailcow/wiki/Installing-Let%27s-Encrypt-ACME-client-Dehydrated

Konfiguration Dehydrated

Datei /etc/dehydrated/config anpassen, z.B. so:

CONFIG_D=/etc/dehydrated/conf.d
BASEDIR=/var/lib/dehydrated
WELLKNOWN="${BASEDIR}/acme-challenges"
DOMAINS_TXT="/etc/dehydrated/domains.txt"

# Produktiv
CA="https://acme-v01.api.letsencrypt.org/directory"
# Test
#CA="https://acme-staging.api.letsencrypt.org/directory"

CHALLENGETYPE="http-01"
PRIVATE_KEY_RENEW="no"
CONTACT_EMAIL=user@domain.tld
IP_VERSION=4

Datei /etc/dehydrated/domains.txt anlegen und in jede Zeile eine Domain eintragen, für die ein Zertifikat erstellt werden soll, z.B. so:

einexperte.de
stadtlandfrucht.de

Konfiguration Apache

Eine Datei /etc/apache2/conf-available/dehydrated.conf mit folgendem Inhalt erstellen

# Letsencrypt / dehydrated
# Neue Lösung:
<If "%{HTTP_HOST} != 'acme.irgitsch.de'">
        RedirectMatch "^/.well-known/(.*)$" "http://acme.irgitsch.de/.well-known/$1"
</If>

# Alte Lösung:
# Globaler Alias wird in VirtualHost-Sektionen nicht ordentlich berücksichtig,
# warum ist nach Lektüre der Dokumentation unklar

#Alias /.well-known/acme-challenge /var/lib/dehydrated/acme-challenges
#<Directory /var/lib/dehydrated/acme-challenges>
#        Options None
#        AllowOverride None
#        Require all granted
#</Directory>

Und aktivieren:

a2enconf dehydrated
systemctl reload apache2

Damit lässt sich dehydrated für alle Domains dieses Servers nutzen, jetzt muss es nur noch ausgeführt werden:
/usr/bin/dehydrated -c

Konfiguration der Domains

Im Anschluss müssen natürlich noch die SSL-Konfigurationen auf die Zertifikatspfade angepasst werden, z.B. in /etc/apache2/sites-enabled/einexperte.de-ssl.conf:

        # Let'sEncrypt Zertifikate
        SSLCertificateFile    /var/lib/dehydrated/certs/einexperte.de/fullchain.pem
        SSLCertificateKeyFile /var/lib/dehydrated/certs/einexperte.de/privkey.pem

Konfiguration Cron

Da die letsencrypt-Zertifikate nach 90 Tage verfallen ist es sinnvoll, diesen Befehl einmal wöchtenlich durch cron ausführen zu lassen.

Außerdem muss die Konfiguration des (Apache-) Webservers neu geladen werden, damit die neuen Zertifikate auch verwendet werden (die Zertifikate werden einmalig beim Start des Webservers aus den Dateien geladen und nicht zur Laufzeit).

Beispieleinträge für die Crontab:

20 1    * * 1   root   /usr/bin/dehydrated -c
25 1    * * 1   root   /usr/sbin/apache2ctl restart
Topic-Revision: r8 - 31 Mar 2018, EinExperte
Diese Seite läuft auf FoswikiDas Urheberrecht © liegt bei den mitwirkenden Autoren. Alle Inhalte dieser Kollaborationsplattform sind Eigentum der Autoren.
Ideen, Anfragen oder Probleme bezüglich bitmuehle wiki? Feedback senden