Server Installation/Let's Encrypt
Inhaltsverzeichnis |
Überblick
Die unstehenden Hinweise erleichtern die Einrichtung von Let's Encrypt auf einem Opennet-Server. Somit ist es möglich, SSL-Zertifikate automatisiert zu erstellen und zu erneuern.
Einrichtung des Shell-Clients (letsencrypt-sh)
letsencrypt.sh ermöglicht die Erzeugung und Aktualisierung von letsencrypt-Zertifikaten mit einem überschaubaren bash-Skript.
Der folgende Ablauf erzeugt einen Nutzer für die Ausführung von letsencrypt.sh und bereitet das Datenverzeichnis für die Auflistung der Domains und die Ablage der Zertifikate vor.
git clone https://github.com/lukas2511/letsencrypt.sh.git /usr/local/lib/letsencrypt.sh adduser --system --shell /bin/bash --disabled-password letsencrypt-sh BASE_DIR=~letsencrypt-sh/data mkdir -p "$BASE_DIR/.acme-challenges" touch "$BASE_DIR/domains.txt" echo "BASEDIR='$BASE_DIR'" > "$BASE_DIR/config.sh" echo "HOOK_CHAIN='yes'" >> "$BASE_DIR/config.sh" echo "HOOK='$BASE_DIR/hook.sh'" >> "$BASE_DIR/config.sh" printf '#!/bin/sh\n[ "$1" != "deploy_cert" ] || service apache2 restart' > "$BASE_DIR/hook.sh" chmod +x "$BASE_DIR/hook.sh" chown -R letsencrypt-sh. "$BASE_DIR"
Domains/Zertifikate festlegen
Trage in die Datei ~letsencrypt-sh/data/domains.txt die Domains ein, für die Zertifikate erzeugt werden sollen. Falls ein Zertifikat mehrere Namen enthalten soll, dann sind die Namen durch Leerzeichen oder Tabulatoren getrennt in eine Zeile zu schreiben. Jede Zeile entspricht einem Zertifikat.
Zertifikat-Erstellung und -Erneuerung
Einmalige manuelle Ausführung:
su -c "/usr/local/lib/letsencrypt.sh/letsencrypt.sh --config ~/data/config.sh --cron" letsencrypt-sh
Dabei werden für alle in der Datei domains.txt aufgelisteten Domains Zertifikate erzeugt.
Für die regelmäßige Ausführung sollte ein Cron-Job angelegt werden (mit angepasster Uhrzeit):
echo "34 3 * * 0 /usr/local/lib/letsencrypt.sh/letsencrypt.sh --config ~/data/config.sh --cron >/dev/null" >>/var/spool/cron/crontabs/letsencrypt-sh
Integration in Dienste
Apache2
Konfigurationsdatei (für alle Domains) erzeugen:
cat >/etc/apache2/conf-available/letsencrypt-sh.conf <<EOF <Location /.well-known/> ProxyPass ! Require all granted </Location> Alias /.well-known/acme-challenge/ $BASE_DIR/.acme-challenges/ EOF a2enconf letsencrypt-sh.conf service apache2 reload
SSL-Zertifikate in einem VirtualHost (typischerweise auf Port 443) konfigurieren:
SSLEngine on SSLCertificateFile /home/letsencrypt-sh/data/certs/DOMAIN_NAME/cert.pem SSLCertificateKeyFile /home/letsencrypt-sh/data/certs/DOMAIN_NAME/privkey.pem SSLCertificateChainFile /home/letsencrypt-sh/data/certs/DOMAIN_NAME/chain.pem