Prosody: XMPP over HTTPS

In öffentlichen Hotspots oder sonstigen limitierten Netzwerken ist oft nur der Webserver Port 80 und 443 erlaubt. Aus diesem Grund könnte es für den einen oder anderen Admin eines XMPP Dienstes von Interesse sein XMPP over HTTPS für Nutzer in solchen Netzwerken anzubieten.

In dieser Anleitung erkläre ich, wie auf einem bereits laufenden Debian 9 (Stretch) Server mit XMPP und Webserver eine HTTPS Weiche (sslh) zu konfigurieren ist.

Punkt 1: Installation des Pakets

Das Paket in Version 1.18 gibt es unter Debian 9 ohne weitere Repo’s hinzufügen zu müssen.

Punkt 2: Webserver Listen-Adresse anpassen

Wir änderen das Listen-Interface des Apachen wie folgt ab. (Für Nginx ebenfalls einfach umzusetzen)

Evtl. ist es nötig in den einzelnen vHosts ebenfalls die IP-Adresse für HTTPS auf 127.0.0.1 im Ordner /etc/apache2/sites-available/ abzuändern!

Punkt 3: Aktivieren des legacy SSL Ports unter Prosody

Prosody muss nun noch erlaubt werden auf dem alten SSL Port 5223 zu lauschen. Wir fügen folgende Zeile hinzu.

Punkt 4: sslh Daemon anpassen

Wir erlauben sslh beim Booten zu starten und fügen unsere künftige Konfiguration hinzu.

Punkt 5: sslh Konfiguration anlegen

Der Ordner /etc/sslh/ muss angelegt werden.

Jetzt kann die Konfigurationsdatei erzeugt und gespeichert werden. (Zeile 14 bitte anpassen!)

Punkt 6: Wir starten die Dienste neu

…und prüfen ob die Umstellungen erfolgt sind. Die Dienste sollten nun auf diesen IPs + Ports laufen.

Punkt 7: DNS Records

Damit limitierte Nutzer nun ohne Änderung an der Client-Konfiguration sich zum XMPP Dienst verbinden können, erstellen wir unsere SRV Records im Nameserver wie folgt.

Sortiert nach Priorität: 5222/xmpp, 5223/tls, 443/xmpp, 443/tls:

Punkt 8: Prüfen der Verbindung

Mit openssl prüfen wir auf der Konsole ob eine HTTPS Verbindung möglich ist.

 

Dominion

Dominion

Linux Systemadministrator

Das könnte Dich auch interessieren...

2 Antworten

  1. Nur der Vollständigkeithalber: Theoretisch können auch mehrere Zertifikate benutzt werden. Dazu legt man mehrere legacy ports an. Zum Beispiel 5223, 5224, 5225 usw. Jeder Port bekommt dann sein eigenes Zertifikat.
    Erklärt ist das in der Prosody docu: https://prosody.im/doc/ports Das Beispiel für http_ssl { … } lässt sich auf lässt sich auf legacy_ssl_ssl { [5223] = {…}, [5224] = {…}} transferieren.
    Per sslh werden dann die verschiedenen domains auf die verschiedenen Ports gelenkt.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.