Benutzer-Werkzeuge

Webseiten-Werkzeuge


de:letsencrypt_einrichten

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 CTRL + s speichern und den Editor mit CTRL + x und CTRL + 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 CTRL + s speichern und den Editor mit CTRL + x und CTRL + 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"

Mache ejabberd die geänderte Konfiguration bekannt:

./opt/ejabberd-22.10/bin/ejabberdctl reload_config
de/letsencrypt_einrichten.1669025204.txt.gz · Zuletzt geändert: 21.11.2022, 11:06 von Christoph Stoltz