Unter Debian 9 Stretch kann man sich sehr einfach gültige SSL Zertifikate von Let´s Encrypt erstellen. Wie das genau innerhalb weniger Minuten funktioniert können sie hier nachlesen.
Später benötigen wir einen Webserver. In dieser Anleitung verwende ich nginx dafür. Solltet ihr noch kein nginx installiert haben, dann führt einfach folgenden Befehl aus:
apt-get update apt-get install nginx
Um das Tool zu installieren müssen einfach folgende Befehle eingegeben werden.
apt-get update apt-get install certbot
Nun erstellen wir die benötigten “Freigaben”, damit certbot unsere Identität überprüfen kann. Dazu gebt ihr folgendes in die Konsole ein:
echo "location ^~ /.well-known/acme-challenge/ { default_type "text/plain"; root /var/www/letsencrypt; }" >> /etc/nginx/snippets/letsencrypt.conf
Als nächstes erstellen wir das Verzeichnis, in dem alle Zertifikats-Anfragen bearbeitet werden sollen.
mkdir -p /var/www/letsencrypt/.well-known/acme-challenge
Damit euer nginx Server nun die Anfragen von certbot beantworten könnt, müsst ihr folgende Zeile in eurer nginx Konfiguration hinzufügen:
include /etc/nginx/snippets/letsencrypt.conf;
Dies wäre also zum Beispiel in der “Default” Konfiguration:
nano /etc/nginx/sites-available/default
server { listen 80 default_server; listen [::]:80 default_server; include /etc/nginx/snippets/letsencrypt.conf; . . } }
Diese Zeile müsst ihr in ALLE Konfigurationen hinzufügen, die ein Zertifikat bekommen sollen.
Nun muss nginx neu gestartet werden, damit die Einstellungen wirken.
service nginx restart
Nun müsst ihr festlegen, für welche Domains euer Zertifikat gültig sein soll.
certbot certonly --rsa-key-size 4096 --webroot -w /var/www/letsencrypt -d eureDomain.de -d www.eureDomain.de
Erklärung:
rsa-key-size: Gibt die Schlüssellänge an. 4096Bit zählt derzeit als sicher. webroot: Gibt das Verzeichnis für die Anfragen an. Dies ist unser neu erstellter Ordner -d eureDomain.de: Hier könnt ihr nun alle Domains hinschreiben, die ihr im Zertifikat haben wollt. Optional: --dry-run -> dient zum Testen, ob alles funktioniert
Nun werdet ihr gebeten eine Email Adresse als Kontakt zu hinterlegen.
Wenn ihr fertig seid und alles funktioniert hat, dann sollte es bei euch auch so aussehen.
Einbinden in nginx
ssl on; ssl_certificate /etc/letsencrypt/live/eureDomain.de/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/eureDomain.de/privkey.pem;
Einbinden in Apache2
SSLEngine on SSLCertificateFile /etc/letsencrypt/live/eureDomain.de/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/eureDomain.de/privkey.pem
Hallo,
Ich bin grad dabei dein Tutorial, das einzig hilfreiche was ich fand, zum Einrichten eines Mailservers abzuarbeiten. Ich habe schon zuvor mit Debian und Apache gearbeitet, und da ich auf meinem neuen Server nun mal schon Apache mit PHP 7.2 und neuster MariaDB-Version installiert habe, hatte ich keinen bock nochmal alles für nginx zu machen, auch wenn mir im Nachhinein die Vorteile von nginx gegenüber Apache klar sind. Ich habe das Tutorial bis zum Schritt 6 (Postfix konfigurieren) mit dem Apache erfolgreich durchgeführt (ggf. ein Paar sachen umgeschrieben), dann habe ich mich aber dazu entschieden vor dem Fortfahren erstmal die SSL-Zertifikate einzurichten. Oben im Tutorial war ein Link hierher, wo leider auch alles mit nginx durchgeführt wurde. Da die Tutorials bisher so fehlerfrei verliefen schrieb ich einfach die Anleitung für mich ein wenig um, und bis zum Schritt wo man den Apache / nginx neustarten soll hat alles geklappt. Nun meldet mein Apache ein Problem mit dem Syntax von dem Befehl in /etc/apache2/snippets/letsencrypt.conf (bei dir im Tutorial wäre das dann /etc/nginx/snippets/letsencrypt.conf), was wahrscheinlich einfach an dem Unterschied der beiden Server liegt. Wüsstest du wie ich die “location” anweisung (erste Zeile, Grund für Fehlermeldung) für den Apache umschreiben könnte?
Hallo Christian!
Ich würde gern eine Nextcloud-Installation auf einem Cubietruck mit Armbian (Debian Stretch) aufbauen. Diese soll nur im Heimnetz erreichbar sein, von außen verwende ich einen VPN-Zugang zum Heimnetz.
Für das SSL-Zertifikat benötigt man nach deinem Vorschlag eine eigene Domain, die ich im Heimnetz nicht habe bzw. brauche.
Was verstehe ich nicht? Was müsste ich ändern, da die selbst erstellten Zertifikate ja neuerdings problematisch sind.
Danke für die sehr hilfreichen Artikel!
Grüße Alois
Hallo Crisrtian
an welcher position in der /etc/nginx/sites-available/default , müssen die 3 zeilen eingetragen werden?
ssl on;
ssl_certificate /etc/letsencrypt/live/eureDomain.de/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/eureDomain.de/privkey.pem;
LG Tom
Hallo Christian,
ich habe mit Hilfe deiner Anleitung angefangen mir Nextcloud auf meinem Homeserver zu installieren.
Wie kann ich denn diese Anleitung für meinen Homeserver einsetzen, wenn ich entweder per localhost, oder per dyndns Zertifizieren möchte.
LG,
Felix
Hallo Christian,
danke für die tolle Anleitung.
Ich habe nur eine Frage zu dem Punkt mit den Freigaben.
gebe ich dies wirklich so 1:1 im Terminal von Mac (Verbunden mit einem Raspberry Pi mit Raspian Stretch) ein? Mit diesen Zeilenumbrüchen scheint das bei mir nicht zu klappen.
VG David
Hallo!
Auch hier Danke für den hilfreichen Artikel! Wozu genau ist das Verzeichnis für die “Freigaben”? Ist es sinnvoll, dieses in Document-Root vom Webserver zu legen? Spielt das eine Rolle?
Viele Grüße
Robin
Sieht schick einfach auch. Danke.
Aber wie wird das Zertifikat aktualisiert? Geht das dann automatisch? Let´s Encrypt Zertifikate halten ja nur drei Monate.