Server Installation/Let's Encrypt: Unterschied zwischen den Versionen

Aus Opennet
Wechseln zu: Navigation, Suche
K (domains.txt muss noch nicht erzeugt werden)
(Dateiname korrigiert)
Zeile 19: Zeile 19:
  
 
== Domains/Zertifikate festlegen ==
 
== Domains/Zertifikate festlegen ==
Trage in die Datei <i>~letsencrypt-sh/data/domains.txt</i> 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.
+
Trage in die (neu zu erzeugende) Datei <i>/var/lib/letsencrypt.sh/domains.txt</i> 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 ==
 
== Zertifikat-Erstellung und -Erneuerung ==

Version vom 29. Juni 2016, 02:42 Uhr

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.

In Debian Jessie ist leider noch kein letsencrypt-Client verfügbar. Hier hilft das Backports-Repository:

  1. Source-Eintrag in der Datei /etc/apt/sources.list eintragen: https://backports.debian.org
  2. Quellen aktualisieren: apt-get update
  3. 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" ] || 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.

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.

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
a2enmod proxy_http
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
Meine Werkzeuge
Namensräume

Varianten
Aktionen
Start
Opennet
Kommunikation
Karten
Werkzeuge