Server Installation/Let's Encrypt: Unterschied zwischen den Versionen
Lars (Diskussion | Beiträge) (Umstellung auf root als Ausführender) |
(→Zertifikat-Erstellung und -Erneuerung: dehydrated --cron) |
||
(7 dazwischenliegende Versionen von einem Benutzer werden nicht angezeigt) | |||
Zeile 13: | Zeile 13: | ||
printf "HOOK_CHAIN='yes'\nHOOK='/etc/letsencrypt.sh/hook.sh'" > /etc/letsencrypt.sh/conf.d/opennet.sh | printf "HOOK_CHAIN='yes'\nHOOK='/etc/letsencrypt.sh/hook.sh'" > /etc/letsencrypt.sh/conf.d/opennet.sh | ||
− | printf '#!/bin/sh\n[ "$1" != "deploy_cert" ] || service apache2 restart' > /etc/letsencrypt.sh/hook.sh | + | printf '#!/bin/sh\n[ "$1" != "deploy_cert" ] || /usr/sbin/service apache2 restart' > /etc/letsencrypt.sh/hook.sh |
chmod +x /etc/letsencrypt.sh/hook.sh | chmod +x /etc/letsencrypt.sh/hook.sh | ||
Zeile 22: | Zeile 22: | ||
== Zertifikat-Erstellung und -Erneuerung == | == Zertifikat-Erstellung und -Erneuerung == | ||
+ | {{hinweis|Vor der Erstellung von Zertifikaten muss die untenstehende ''Integration in Dienste'' ausgeführt werden. Andernfalls kann letsencrypt nicht die Challenge-Prüfung durchführen.}} | ||
+ | |||
Einmalige manuelle Ausführung: | Einmalige manuelle Ausführung: | ||
− | + | dehydrated --cron | |
Dabei werden für alle in der Datei <i>domains.txt</i> aufgelisteten Domains Zertifikate erzeugt. | Dabei werden für alle in der Datei <i>domains.txt</i> aufgelisteten Domains Zertifikate erzeugt. | ||
Zeile 34: | Zeile 36: | ||
cat >/etc/apache2/conf-available/letsencrypt-sh.conf <<EOF | cat >/etc/apache2/conf-available/letsencrypt-sh.conf <<EOF | ||
<Location /.well-known/> | <Location /.well-known/> | ||
− | ProxyPass ! | + | <IfModule mod_proxy.c> |
+ | ProxyPass ! | ||
+ | </IfModule> | ||
Require all granted | Require all granted | ||
</Location> | </Location> | ||
− | Alias /.well-known/acme-challenge/ | + | Alias /.well-known/acme-challenge/ /var/lib/letsencrypt.sh/acme-challenges/ |
EOF | EOF | ||
a2enconf letsencrypt-sh.conf | a2enconf letsencrypt-sh.conf | ||
− | + | service apache2 restart | |
− | service apache2 | + | |
SSL-Zertifikate in einem VirtualHost (typischerweise auf Port 443) konfigurieren: | SSL-Zertifikate in einem VirtualHost (typischerweise auf Port 443) konfigurieren: | ||
SSLEngine on | SSLEngine on | ||
− | SSLCertificateFile / | + | SSLCertificateFile /var/lib/letsencrypt.sh/certs/DOMAIN_NAME/cert.pem |
− | SSLCertificateKeyFile / | + | SSLCertificateKeyFile /var/lib/letsencrypt.sh/certs/DOMAIN_NAME/privkey.pem |
− | SSLCertificateChainFile / | + | SSLCertificateChainFile /var/lib/letsencrypt.sh/certs/DOMAIN_NAME/chain.pem |
+ | |||
+ | === nginx === | ||
+ | Konfigurationsdatei (ür alle Domains) erzeugen: | ||
+ | cat >/etc/nginx/snippets/letsencrypt.conf <<EOF | ||
+ | location /.well-known/acme-challenge { | ||
+ | default_type "text/plain"; | ||
+ | alias /var/lib/letsencrypt.sh/acme-challenges/; | ||
+ | } | ||
+ | EOF | ||
+ | |||
+ | Anschließend in jeder http-site-Konfiguration folgende Zeile einfügen: | ||
+ | include /etc/nginx/snippets/letsencrypt.conf; | ||
+ | |||
+ | Jede https-site-Konfiguration sollte folgende Zeilen enthalten: | ||
+ | ssl_certificate /var/lib/letsencrypt.sh/certs/ZERTIFIKAT_DOMAIN/fullchain.pem; | ||
+ | ssl_certificate_key /var/lib/letsencrypt.sh/certs/ZERTIFIKAT_DOMAIN/privkey.pem; | ||
+ | |||
[[Kategorie:Server]] | [[Kategorie:Server]] | ||
[[Kategorie:Anleitungen]] | [[Kategorie:Anleitungen]] | ||
[[Kategorie:Konfiguration]] | [[Kategorie:Konfiguration]] |
Aktuelle Version vom 21. Januar 2019, 21:52 Uhr
Inhaltsverzeichnis |
[Bearbeiten] Ü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.
[Bearbeiten] Einrichtung des Shell-Clients (letsencrypt-sh)
letsencrypt.sh ermöglicht die Erzeugung und Aktualisierung von letsencrypt-Zertifikaten mit einem überschaubaren bash-Skript.
In Debian Jessie ist leider noch kein letsencrypt-Client verfügbar. Hier hilft das Backports-Repository:
- Source-Eintrag in der Datei /etc/apt/sources.list eintragen: https://backports.debian.org
- Quellen aktualisieren: apt-get update
- Paket installieren: apt-get install letsencrypt.sh
Anschließend erfolgt die Konfiguration für unsere Bedürfnisse:
printf "HOOK_CHAIN='yes'\nHOOK='/etc/letsencrypt.sh/hook.sh'" > /etc/letsencrypt.sh/conf.d/opennet.sh printf '#!/bin/sh\n[ "$1" != "deploy_cert" ] || /usr/sbin/service apache2 restart' > /etc/letsencrypt.sh/hook.sh chmod +x /etc/letsencrypt.sh/hook.sh
Falls auf dem aktuellen Host ein anderer Webserver als Apache2 zum Einsatz kommen sollte, muss der obige Hook korrigiert werden.
[Bearbeiten] Domains/Zertifikate festlegen
Trage in die (neu zu erzeugende) Datei /var/lib/letsencrypt.sh/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.
[Bearbeiten] Zertifikat-Erstellung und -Erneuerung
Vor der Erstellung von Zertifikaten muss die untenstehende Integration in Dienste ausgeführt werden. Andernfalls kann letsencrypt nicht die Challenge-Prüfung durchführen. |
Einmalige manuelle Ausführung:
dehydrated --cron
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 (via crontab -e):
34 3 * * 0 letsencrypt.sh --cron >/dev/null
[Bearbeiten] Integration in Dienste
[Bearbeiten] Apache2
Konfigurationsdatei (für alle Domains) erzeugen:
cat >/etc/apache2/conf-available/letsencrypt-sh.conf <<EOF <Location /.well-known/> <IfModule mod_proxy.c> ProxyPass ! </IfModule> Require all granted </Location> Alias /.well-known/acme-challenge/ /var/lib/letsencrypt.sh/acme-challenges/ EOF a2enconf letsencrypt-sh.conf service apache2 restart
SSL-Zertifikate in einem VirtualHost (typischerweise auf Port 443) konfigurieren:
SSLEngine on SSLCertificateFile /var/lib/letsencrypt.sh/certs/DOMAIN_NAME/cert.pem SSLCertificateKeyFile /var/lib/letsencrypt.sh/certs/DOMAIN_NAME/privkey.pem SSLCertificateChainFile /var/lib/letsencrypt.sh/certs/DOMAIN_NAME/chain.pem
[Bearbeiten] nginx
Konfigurationsdatei (ür alle Domains) erzeugen:
cat >/etc/nginx/snippets/letsencrypt.conf <<EOF location /.well-known/acme-challenge { default_type "text/plain"; alias /var/lib/letsencrypt.sh/acme-challenges/; } EOF
Anschließend in jeder http-site-Konfiguration folgende Zeile einfügen:
include /etc/nginx/snippets/letsencrypt.conf;
Jede https-site-Konfiguration sollte folgende Zeilen enthalten:
ssl_certificate /var/lib/letsencrypt.sh/certs/ZERTIFIKAT_DOMAIN/fullchain.pem; ssl_certificate_key /var/lib/letsencrypt.sh/certs/ZERTIFIKAT_DOMAIN/privkey.pem;