Dies ist eine alte Version des Dokuments!
Let's Encrypt einrichten
Diese Anleitung setzt ejabberd Installation voraus.
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, deswegen verwenden wir den Client aus der Debianinstallation.
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_certrenew.sh
und füllen es mit folgendem Inhalt:
#!/bin/bash CAT="$(which cat)" EJABBERDUSER="ejabberd" 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 Datei mit [STRG] + [s] speichern und den Editor mit [STRG] + [x] und [STRG] + [c] verlassen.
Die Datei ausführbar machen:
$ chmod +x /opt/scripts/ejabberd_certrenew
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/script/ejabberd_certrenew.sh 2>&1
Mit [Enter] eine leere Zeile am Ende der Datei einfügen. Die Datei mit [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/script/ejabberd_certrenew
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 Datei mit [STRG] + [s] speichern und den Editor mit [STRG] + [x] und [STRG] + [c] verlassen.
Mache ejabberd die geänderte Konfiguration bekannt:
./opt/ejabberd-22.10/bin/ejabberdctl reload_config