Dieser Artikel ist auf Wunsch von intux entstanden.
Im folgenden Artikel möchte ich darauf eingehen, wie man Prosody mit Let's Encrypt nutzen kann, ohne Zertifikate zu kopieren, Script zu schreiben oder die Rechte auf die Zertifikate zu ändern, damit Prosody sie lesen und nutzen kann.
Vorraussetzungen
Im Artikel gehe ich davon aus, dass ihr Prosody bereits installiert und eingerichtet habt. Zusätzlich gehe ich davon aus, dass ihr mit LE bereits für die entsprechende Domain Zertifikate angefordert habe und zwar für:
- example.org
- conference.example.org
Das lässt sich sehr schön mit der DNS Überprüfung von LE lösen.
Die Zertifikate sollten in dem Ordner
/etc/letsencrypt/live/example.org/
liegen und ihr nutzt den certbot für die Erstellung eurer Zertifikate.
Prosody SSL Konfiguration
Ich werde nur ganz kurz anschneiden, wie eine "sichere" SSL Konfiguration für die Verwendung mit Prosody aussehen sollte:
c2s_require_encryption = true;
s2s_require_encryption = true;
s2s_secure_auth = true;
ssl = {
protocol = "tlsv1_2";
ciphers = "EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA+SHA384:EECDH+ECDSA+SHA256:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH:EDH+aRSA:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS:!RC4:!SEED:!AES128:!CAMELLIA128";
options = { "no_sslv2", "no_sslv3", "no_ticket", "no_compression", "cipher_server_preference", "single_dh_use", "single_ecdh_use" };
dhparam = "/etc/prosody/dhparam.pem";
}
Bitte keine Angaben in die Datei wo das Zertifikate liegt, wenn ihr diese bereits habt, könnt ihr diese löschen.
Die Datei /etc/prosody/dhparam.pem
wird mit dem folgenden Befehl erstellt:
openssl dhparam -dsaparam -out /etc/prosody/dhparam.pem 4096
Achtung: Das dauert sehr lange, ich empfehle es mit screen zu machen.
Prosody & Let's Encrypt
So jetzt kommen wir zum eigentlichen Teil, wichtig hier, dass ihr min. Version 0.10 habt:
root@vps73846:/etc/prosody# apt-cache policy prosody
prosody:
Installed: 0.10.1-1~stretch1
Candidate: 0.10.1-1~stretch1
Version table:
*** 0.10.1-1~stretch1 500
Um die aktuelle Version unter Debian Stable (Stretch) zu bekommen, solltet ihr die Prosody Repo nutzen.
So jetzt führen wir einfach den folgenden Befehl aus:
prosodyctl --root cert import /etc/letsencrypt/live
Wichtig, nur auf den live Ordner, nicht im example.org Ordner.
Prosody erkennt automatisch die richtigen Zertifikate und konfiguriert sich dementsprechend. Das war es eigentlich auch schon. Aber nur fast.
Das Problem, die Zertifikate müssen nach jedem neu erstellen wieder eingelesen werden. Dazu nutzen wir die Möglichkeit der globalen Konfigurationsdatei von Let's Encrypt, /etc/letsencrypt/cli.ini
Der Inhalt sollte so aussehen, ja ihr müsste die Datei erst anlegen
# Global config for letsencrypt runs
#
# Note that these options apply automatically to all use of Certbot for
# obtaining or renewing certificates, so options specific to a single
# certificate on a system with several certificates should not be placed
# here.
renew-hook = prosodyctl --root cert import /etc/letsencrypt/live
post-hook = prosodyctl --root cert import /etc/letsencrypt/live
So das wars. Jetzt haben wir Prosody mit den aktuellen LE Zertifikaten ausgerüstet und auch dafür gesorgt, das es immer die aktuellen Zertifikate bekommt.