Benutzer-Werkzeuge

Webseiten-Werkzeuge


de:letsencrypt_einrichten

Let's Encrypt einrichten

Voraussetzung

Einleitung

Damit beim Login keine Zertifikatsfehler mehr auftreten, ist es sinnvoll ein eigenes Zertifikat zu verwenden. Diese gibt es kostenlos über Let's Encrypt. ejabberd bringt einen eigenen Client dafür mit, hat aber den Nachteil, dass Port 80 (dieser wird für Let's Encrypt benötigt) auf einen von ejabberd verwendeten Port umgeleitet werden muss. Das ist nicht wirklich praktisch und verhindert z.B. den Betrieb eines Webservers auf dem gleichen Server. Deswegen verwenden wir den Client aus der Debianinstallation.

Einrichtung

Let's Encrypt und benötigte Pakete installieren:

$ apt install certbot sudo

Zertifikat generieren:

$ certbot certonly -d <beispiel.de> --standalone

Damit wird ein Zertifikat für <beispiel.de> generiert. Du wirst noch nach deiner E-Mail Adresse gefragt, über die du kontaktiert wirst, wenn dein Zertifikat abläuft. Grundsätzlich findet aber eine automatische Erneuerung statt.

Damit ejabberd von der Erneuerung erfährt, richten wir ein automatisches Script ein:

$ mkdir /opt/scripts
$ jed /opt/scripts/ejabberd_script.sh

und füllen es mit folgendem Inhalt:

#!/bin/bash

CAT="$(which cat)"
EJABBERDUSER="ejabberd"
EJABBERDCTL="/home/ejabberd/opt/ejd/bin/ejabberdctl"
PRIVKEY="/etc/letsencrypt/live/<beispiel.de>/privkey.pem"
CERT="/etc/letsencrypt/live/<beispiel.de>/cert.pem"
CHAIN="/etc/letsencrypt/live/<beispiel.de>/chain.pem"
COMBINED="/home/ejabberd/certs/certs.pem"

$CAT $PRIVKEY > $COMBINED
$CAT $CERT >> $COMBINED
$CAT $CHAIN >> $COMBINED

$SUDO -u $EJABBERDUSER $EJABBERDCTL reload_config

Die Änderungen mit [STRG] + [x] und [STRG] + [s] speichern und den Editor mit [STRG] + [x] und [STRG] + [c] verlassen.

Die Datei ausführbar machen:

$ chmod +x /opt/scripts/ejabberd_script.sh

Für das Script richten wir einen Cronjob ein, sodass das Script jeden Montag um Mitternacht ausgeführt wird:

$ jed /etc/crontab

Folgende Zeile am Ende einfügen:

0 0 * * 1 root /opt/scripts/ejabberd_script.sh 2>&1

Mit [Enter] eine leere Zeile am Ende der Datei einfügen. Die Änderungen mit [STRG] + [x] und [STRG] + [s] speichern und den Editor mit [STRG] + [x] und [STRG] + [c] verlassen.

Als Benutzer ejabberd weiterarbeiten:

$ su - ejabberd
$ mkdir certs
$ exit

Das Script einmalig ausführen, damit das Zertifikat erstmalig in das neue Verzeichnis kopiert wird:

$ /opt/scripts/ejabberd_script.sh

Weiter als ejabbberd und die Konfiguration anpassen:

$ su - ejabberd
$ jed opt/ejabberd/conf/ejabberd.yml

Suche nach:

ca_file: /home/christoph/opt/ejabberd/conf/cacert.pem

certfiles:
  - /home/christoph/opt/ejabberd/conf/server.pem

## If you already have certificates, list them here
# certfiles:
#  - /etc/letsencrypt/live/domain.tld/fullchain.pem
#  - /etc/letsencrypt/live/domain.tld/privkey.pem

passe den Abschnitt certfiles an und lösche den Rest:

certfiles:
  - "/home/ejabberd/certs/certs.pem"

Die Änderungen mit [STRG] + [x] und [STRG] + [s] speichern und den Editor mit [STRG] + [x] und [STRG] + [c] verlassen.

Mache ejabberd die geänderte Konfiguration bekannt:

$ ./opt/ejd/bin/ejabberdctl reload_config
de/letsencrypt_einrichten.txt · Zuletzt geändert: 25.11.2022, 10:20 von Christoph Stoltz