===== Let's Encrypt einrichten ===== ==== Voraussetzung ==== * Dieses Howto setzt [[de:ejabberd_installation|ejabberd Installation]] voraus. ==== 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 --standalone Damit wird ein Zertifikat für 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//privkey.pem" CERT="/etc/letsencrypt/live//cert.pem" CHAIN="/etc/letsencrypt/live//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