Let's Encrypt SSL Zertifikat erstellen: Unterschied zwischen den Versionen
Geli (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
Geli (Diskussion | Beiträge) KKeine Bearbeitungszusammenfassung Markierung: visualeditor |
||
(8 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 10: | Zeile 10: | ||
Zuerst wird der Apache Server gestoppt | Zuerst wird der Apache Server gestoppt | ||
sudo service | sudo service apache2 stop | ||
An dieser Stelle kann am Router/Modem auch die Portweiterleitung für 443 (https) zusätzlich zu 80 (http) vorgenommen werden. | An dieser Stelle kann am Router/Modem auch die Portweiterleitung für 443 (https) zusätzlich zu 80 (http) vorgenommen werden. | ||
Zeile 19: | Zeile 19: | ||
<big>'''Let's Encrypt SSL Zertifikat erstellen'''</big> | <big>'''Let's Encrypt SSL Zertifikat erstellen'''</big> | ||
Um das Let's Encrypt-Tool herunterzuladen, verwenden wir Git. Möglicherweise muss es zuerst installiert werden. | Um das Let's Encrypt-Tool herunterzuladen, verwenden wir Git. Möglicherweise muss es zuerst installiert werden (sudo apt-get install git). | ||
cd ~ | cd ~ | ||
git clone https://github.com/letsencrypt/letsencrypt | git clone https://github.com/letsencrypt/letsencrypt | ||
cd letsencrypt | cd letsencrypt | ||
Man benötigt danach alle Domains (Subdomains), für die das Zertifikat gelten soll (z.B. domain.at, www.domain.at, etc.). Im folgenden Beispiel | Man benötigt danach alle Domains (Subdomains), für die das Zertifikat gelten soll (z.B. domain.at, www.domain.at, etc.). Im folgenden Beispiel sollen zwei Domainen mit dem Zertifikat versorgt werden. | ||
Der Befehl für die Zertifikatserstellung lautet nun: | Der Befehl für die Zertifikatserstellung lautet nun: | ||
./letsencrypt-auto -d | ./letsencrypt-auto -d domain1.at -d domain2.at --redirect --apache -m mailaddr@gmx.at | ||
Der --redirect Parameter sorgt dafür, dass http-Verbindungen zu https weitergeleitet werden, die mail-Adresse ist für eine eventuelle Kontaktaufnahme nötig und --apache nimmt bei diesem Webserver auch gleich die erforderlichen Einstellunge vor. | Der --redirect Parameter sorgt dafür, dass http-Verbindungen zu https weitergeleitet werden, die mail-Adresse ist für eine eventuelle Kontaktaufnahme nötig und --apache nimmt bei diesem Webserver auch gleich die erforderlichen Einstellunge vor. | ||
Zeile 35: | Zeile 35: | ||
Danach können die Zertifikate getestet werden. | Danach können die Zertifikate getestet werden. | ||
sudo /etc/init.d/apache2 start | sudo /etc/init.d/apache2 start | ||
In der Datei /etc/apache2/ports.conf müssen Einträge für den Port 80 und den Port 443 stehen, alle anderen könnten auskommentiert werden. | |||
Listen 80 | |||
<IfModule mod_ssl.c> | <IfModule mod_ssl.c> | ||
Listen 443 | Listen 443 | ||
</IfModule> | </IfModule> | ||
Wird auch Port 80 auskommentiert erscheint ein Fehler wenn der Browser z.B. domain.at auf http://domain.at weiterleitet und nicht auf https://domain.at. Das machen z.B. Edge auf Windows 10 und Chrome auf Android. Firefox redirected auf Port 443. D.h. Port 80 darf nicht gesperrt werden, sonst kann er vom Webserver nicht auf Port 443 redirected werden. | |||
Die Apache2-Konfiguration der redirection ist im Detail auf der Seite "MediaWiki installieren" beschrieben. | |||
Hat der Einbau funktioniert, erscheint beim Aufruf der Domain im Browser ein kleines Schloss. Man kann das Zertifikat auch unter https://www.ssllabs.com/ssltest/index.html testen. | Hat der Einbau funktioniert, erscheint beim Aufruf der Domain im Browser ein kleines Schloss. Man kann das Zertifikat auch unter https://www.ssllabs.com/ssltest/index.html testen. | ||
<big>'''Let's Encrypt SSL Zertifikat | <big>'''Let's Encrypt SSL Zertifikat erneuern'''</big> | ||
Die Zertifikate haben eine Laufzeit von 3 Monaten, danach müssen sie erneuert werden. Das geschieht am besten mit einem Cronjob, der monatlich läuft. Den Eintrag für die Crontab kann man hier generieren: https://crontab-generator.org/ | Die Zertifikate haben eine Laufzeit von 3 Monaten, danach müssen sie erneuert werden. Das geschieht am besten mit einem Cronjob, der monatlich läuft. Den Eintrag für die Crontab kann man hier generieren: https://crontab-generator.org/ | ||
Zeile 52: | Zeile 55: | ||
Hier ist der Parameter --renew-by-default ausschlaggebend. Einen Logfile findet man unter | Hier ist der Parameter --renew-by-default ausschlaggebend. Einen Logfile findet man unter | ||
sudo cat /var/log/letsencrypt/letsencrypt.log | sudo cat /var/log/letsencrypt/letsencrypt.log | ||
Bei mir ist der Erneuerungsprozess schief gelaufen mit folgender '''Fehlermeldung''':<br /> | |||
Installing Python packages... | |||
Had a problem while installing Python packages. | |||
pip prints the following errors: | |||
Lange Fehlerliste, u. a. | |||
THESE PACKAGES DO NOT MATCH THE HASHES FROM THE REQUIREMENTS FILE | |||
... | |||
Abhilfe hat die Entfernung der pip.conf-Datei gebracht. | |||
$ mv /etc/pip.conf /etc/pip.conf_orig | |||
Die Website von Let's Encrypt findet man übrigens hier: https://letsencrypt.org/ | Die Website von Let's Encrypt findet man übrigens hier: https://letsencrypt.org/ |
Aktuelle Version vom 17. Januar 2023, 17:57 Uhr
Vorbereitungen
Eine Verbindung per SSL/TLS schützt den Datenverkehr, indem Pakete verschlüsselt versendet werden. Dank der Let’s Encrypt Initiative gibt es nun solche SSL Zertifikate auch kostenlos. Der große Vorteil (z.B. gegenüber OpenSSL) besteht darin, dass der Zertifizierer in den gängigen Browsern als vertrauenswürdig eingestuft ist.
Hier soll ein Zertifikat für den Apache Webserver erstellt werden.
Voraussetzung:
- Apache ist installiert
- Domain (DDNS) existiert
Zuerst wird der Apache Server gestoppt
sudo service apache2 stop
An dieser Stelle kann am Router/Modem auch die Portweiterleitung für 443 (https) zusätzlich zu 80 (http) vorgenommen werden.
Der Rechner kann auch gleich aktualisiert werden:
sudo apt-get update sudo apt-get upgrade
Let's Encrypt SSL Zertifikat erstellen
Um das Let's Encrypt-Tool herunterzuladen, verwenden wir Git. Möglicherweise muss es zuerst installiert werden (sudo apt-get install git).
cd ~ git clone https://github.com/letsencrypt/letsencrypt cd letsencrypt
Man benötigt danach alle Domains (Subdomains), für die das Zertifikat gelten soll (z.B. domain.at, www.domain.at, etc.). Im folgenden Beispiel sollen zwei Domainen mit dem Zertifikat versorgt werden.
Der Befehl für die Zertifikatserstellung lautet nun:
./letsencrypt-auto -d domain1.at -d domain2.at --redirect --apache -m mailaddr@gmx.at
Der --redirect Parameter sorgt dafür, dass http-Verbindungen zu https weitergeleitet werden, die mail-Adresse ist für eine eventuelle Kontaktaufnahme nötig und --apache nimmt bei diesem Webserver auch gleich die erforderlichen Einstellunge vor.
Mit der Option certonly kann man lediglich die Zertifikate anlegen. Sie befinden sich danach im Ordner /etc/letsencrypt/live/ falls man sie für andere Anwendungen benötigt. Der Einbau muss dann manuell vorgenommen werden.
Hilfe erhält man mit ./letsencrypt-auto --help all
Danach können die Zertifikate getestet werden.
sudo /etc/init.d/apache2 start
In der Datei /etc/apache2/ports.conf müssen Einträge für den Port 80 und den Port 443 stehen, alle anderen könnten auskommentiert werden.
Listen 80 <IfModule mod_ssl.c> Listen 443 </IfModule>
Wird auch Port 80 auskommentiert erscheint ein Fehler wenn der Browser z.B. domain.at auf http://domain.at weiterleitet und nicht auf https://domain.at. Das machen z.B. Edge auf Windows 10 und Chrome auf Android. Firefox redirected auf Port 443. D.h. Port 80 darf nicht gesperrt werden, sonst kann er vom Webserver nicht auf Port 443 redirected werden.
Die Apache2-Konfiguration der redirection ist im Detail auf der Seite "MediaWiki installieren" beschrieben.
Hat der Einbau funktioniert, erscheint beim Aufruf der Domain im Browser ein kleines Schloss. Man kann das Zertifikat auch unter https://www.ssllabs.com/ssltest/index.html testen.
Let's Encrypt SSL Zertifikat erneuern
Die Zertifikate haben eine Laufzeit von 3 Monaten, danach müssen sie erneuert werden. Das geschieht am besten mit einem Cronjob, der monatlich läuft. Den Eintrag für die Crontab kann man hier generieren: https://crontab-generator.org/
Soll der Job am 1. jeden Monats um 2:00 gestartet werden, lautet der Eintrag
sudo crontab -e 0 2 1 * * /home/pi/letsencrypt/letsencrypt-auto -d domain.at --redirect -m mailaddr@gmx.at --agree-tos --renew-by-default
Hier ist der Parameter --renew-by-default ausschlaggebend. Einen Logfile findet man unter
sudo cat /var/log/letsencrypt/letsencrypt.log
Bei mir ist der Erneuerungsprozess schief gelaufen mit folgender Fehlermeldung:
Installing Python packages... Had a problem while installing Python packages.
pip prints the following errors: Lange Fehlerliste, u. a. THESE PACKAGES DO NOT MATCH THE HASHES FROM THE REQUIREMENTS FILE ...
Abhilfe hat die Entfernung der pip.conf-Datei gebracht.
$ mv /etc/pip.conf /etc/pip.conf_orig
Die Website von Let's Encrypt findet man übrigens hier: https://letsencrypt.org/