XEP-0368 auf dem Prosody XMPP-Server

3
5151
Free-Photos / Pixabay

Letztes Wochenende hatte ich den ComplianceTester von Daniel Gultsch durchlaufen lassen und gesehen, dass enige XMPP-Erweiterungen (XEP) nicht aktiviert waren. Die größten Probleme hatte ich bei der Suche nach einer Lösung zur Aktivierung von XEP-0368. Schlußendlich half mir die Anleitung von Dominion auf adminforge.de.

Hier meine Änderungen am XMPP-Server intux.de:

Zuerst wurde sslh installiert.

# apt install sslh

An dieser Stelle wurde ein “eigenständiger Server” ausgewählt.

Dann musste die Datei /etc/apache2/ports.conf (Apache2) mit

# nano /etc/apache2/ports.conf

von 

# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default.conf

Listen 80

<IfModule ssl_module>
        Listen 443
</IfModule>

<IfModule mod_gnutls.c>
        Listen 443
</IfModule>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

in

# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default.conf

Listen 80

<IfModule ssl_module>
        Listen 127.0.0.1:443
</IfModule>

<IfModule mod_gnutls.c>
        Listen 127.0.0.1:443
</IfModule>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

geändert werden. Im Anschluss wurde in die /etc/prosody/prosody.cfg.lua (Prosody) mit 

# nano /etc/prosody/prosody.cfg.lua

die Zeile 

legacy_ssl_ports = 5223

eingefügt. In der /etc/default/sslh musste via

# nano /etc/default/sslh

der Eintrag

RUN=yes

gesetzt werden. Die vorhandene DEAMON_OPTS kommentierte ich aus und fügte

DAEMON_OPTS="-F /etc/sslh/sslh.cfg"

darunter ein. Nun musste das Verzeichnis /etc/sslh/ erstellt werden.

# mkdir /etc/sslh/

Dann wurde eine /etc/sslh/sslh.cfg mit folgendem Inhalt via

# nano /etc/sslh/sslh.cfg
verbose: false;
foreground: false;
inetd: false;
numeric: false;
transparent: false;
timeout: 2;
user: "nobody";
pidfile: "/run/sslh/sslh.pid";


# Change hostname with your external address name. Note: It should not be resolving to 127.0.0.1
listen:
(
    { host: "intux.de"; port: "443"; }
);

protocols:
(
   { name: "tls"; host: "localhost"; port: "5223"; alpn_protocols: [ "xmpp-client" ]; log_level: 0;},
   # catch anything else TLS
   { name: "tls"; host: "localhost"; port: "443";},
   { name: "xmpp";    host: "localhost"; port: "5222"; },
   { name: "timeout"; host: "localhost"; port: "443";}
);

on-timeout: "timeout";

erstellt. Die Dienste Prosody, Apache2 und sslh wurden im Anschluss neu gestartet.

# /etc/init.d/prosody restart
# /etc/init.d/apache2 restart
# /etc/init.d/sslh restart

Ob die IPs und Ports richtig konfiguriert sind, zeigte die Ausgabe von:

# netstat -ntpl | grep -E "5223|443"
tcp  0 0   5.xx.xx.xx:443             0.0.0.0:* LISTEN 12146/sslh
tcp  0 0   127.0.0.1:443             0.0.0.0:* LISTEN 12085/apache2
tcp  0 0   0.0.0.0:5223              0.0.0.0:* LISTEN 11409/lua5.1
tcp6 0 0   2a00:xxxx:xxx::xxxx:443   :::* LISTEN 12146/sslh
tcp6 0 0   :::5223                   :::* LISTEN 11409/lua5.1

Die Records für den XMPP-Server wurden wie folgt gesetzt.

Records
Records des XMPP-Servers

Abschließend konnte ich via openssl erfolgreich die HTTPS-Vervindung testen.

# openssl s_client -connect intux.de:443 -alpn xmpp-client -servername intux.de
CONNECTED(00000003)
depth=2 O = Digital Signature Trust Co., CN = DST Root CA X3
verify return:1
depth=1 C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3
verify return:1
depth=0 CN = intux.de
verify return:1
---
Certificate chain
 0 s:/CN=intux.de
   i:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
 1 s:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
   i:/O=Digital Signature Trust Co./CN=DST Root CA X3
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIHXzCCBkegAwIBAgISA/3nFQfXmCGAv8A/U84FWqEJMA0GCSqGSIb3DQEBCwUA
MEoxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MSMwIQYDVQQD
ExpMZXQncyBFbmNyeXB0IEF1dGhvcml0eSBYMzAeFw0xODA0MDYwNTI4MDBaFw0x
ODA3MDUwNTI4MDBaMBMxETAPBgNVBAMTCGludHV4LmRlMIICIjANBgkqhkiG9w0B
AQEFAAOCAg8AMIICCgKCAgEAo2kSw/AdaY0qs9NFs2LwM9F4dpr3Ne755oyT6zfz
w6vAsfYfyaOztuhjWKGChcw6xDYHUXjPhJNiO3VbMcaEFrtT+tHeX42DjDWKQEjY
b8fb7n0lkgWP2nOUeEiSMdbUn6VOuptv9UEA5cxxxHs4mTTkqouXhAZ0oe1WWmfi
QbeKYb2TANxeyGp/KfRvvDhlF/M2I889PR+Fy+jjbbdaffY3mD+Az4dFBZWVj1/g
yyup8DoMTiCzOC8DDGOp3IuP05Ner8M8HB1YpvcrQVeApQYF8adkRA/v8yxVXHBk
ToQ+8gwZMHCsd7kYCepHA7wyKRabhFWqWw5rCMvFNjGNtUa3qQaKGhnPC+ICEEMy
IGFztXbsCS4ethH/oWcM5nU5UoCFflYxEQ17J7KGc6ozKXtcP6lEuvrpEaXaWBaD
lbt+uYs1l+9SZXokW16edywvYzPeTkUSG7rKDg1fLkqDH5upfT3wUV9T99WwfEid
8sCnNtQzcMGkz4dzC86TMZD2Py4ijrOyIotJ32hb7eFOWKAXuplPjpNs26q3t7vj
8LKe9OBTTFy9vOBFa/6UWnZjhIoo8ppzEugzK8O8pEGxeZGcjJ6Yiq0oddCkpfXk
SEIiXEeuU1at7BMGRvBpMJwdAtEe030nzFpRlVN0hon6XjDte05wS6imJHxxndNc
z/kCAwEAAaOCA3QwggNwMA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEF
BQcDAQYIKwYBBQUHAwIwDAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQU6USFs8mAjkF+
Bh1szN+E3JnbmfowHwYDVR0jBBgwFoAUqEpqYwR93brm0Tm3pkVl7/Oo7KEwbwYI
KwYBBQUHAQEEYzBhMC4GCCsGAQUFBzABhiJodHRwOi8vb2NzcC5pbnQteDMubGV0
c2VuY3J5cHQub3JnMC8GCCsGAQUFBzAChiNodHRwOi8vY2VydC5pbnQteDMubGV0
c2VuY3J5cHQub3JnLzB2BgNVHREEbzBtgg5jbG91ZC5pbnR1eC5kZYITY29uZmVy
ZW5jZS5pbnR1eC5kZYIIaW50dXguZGWCDW1haWwuaW50dXguZGWCDnNlYXJ4Lmlu
dHV4LmRlgg91cGxvYWQuaW50dXguZGWCDHd3dy5pbnR1eC5kZTCB/gYDVR0gBIH2
MIHzMAgGBmeBDAECATCB5gYLKwYBBAGC3xMBAQEwgdYwJgYIKwYBBQUHAgEWGmh0
dHA6Ly9jcHMubGV0c2VuY3J5cHQub3JnMIGrBggrBgEFBQcCAjCBngyBm1RoaXMg
Q2VydGlmaWNhdGUgbWF5IG9ubHkgYmUgcmVsaWVkIHVwb24gYnkgUmVseWluZyBQ
YXJ0aWVzIGFuZCBvbmx5IGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgQ2VydGlmaWNh
dGUgUG9saWN5IGZvdW5kIGF0IGh0dHBzOi8vbGV0c2VuY3J5cHQub3JnL3JlcG9z
aXRvcnkvMIIBBQYKKwYBBAHWeQIEAgSB9gSB8wDxAHcA23Sv7ssp7LH+yj5xbSzl
uaq7NveEcYPHXZ1PN7Yfv2QAAAFimaPvigAABAMASDBGAiEA16BKSa9tudwOJ9NX
bx2a6vKoAI3bVZ4aWvBqwD0SsdECIQDkjrZyazuCnFvNt/1UE/1SnxjY2C+U73kL
5D6LfDQG2gB2ACk8UZZUyDlluqpQ/FgH1Ldvv1h6KXLcpMMM9OVFR/R4AAABYpmj
76oAAAQDAEcwRQIgLNwhpz6m5VZz3doI6jJzHTN7qnGuj65eP7XoNVSpg5ACIQDj
W9GmRaMUoTxy7WHIuNpwFkJpiYRVUQtMyYkumbhb4zANBgkqhkiG9w0BAQsFAAOC
AQEAjJaamX5zMXkTJvaMgFogI0R9oZdaPTOWO9Nfjuc0b1mwcjLg2XWu2La4/WZm
NmG3OjL+t6B4ZQxefQrVDat92hAGMyibJRa9xSOnzlx371y/RZckSOeQ9/JDV2Lq
R/kubgEmFVVR65H9ubve2C6X9tgTppHXT265ExIe3NRf4ELkw1jmr0WCFQXUeFZj
jYU4neTzcbJBV4ot5Qe5CznFJA8+oh9cBLrOo6xCFX5Z4kHWQ6T3btBfW2PGb7pN
JOxTtS94WPt8NNlGOPPQ8zYaCOiLdN1r72q0wqv7FuOyQqT2abVYoWa9ylcFU5ru
V8amsVkC1fzRgH65uV0aVtWVDA==
-----END CERTIFICATE-----
subject=/CN=intux.de
issuer=/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
---
No client certificate CA names sent
Client Certificate Types: RSA sign, DSA sign, ECDSA sign
Requested Signature Algorithms: RSA+SHA512:DSA+SHA512:ECDSA+SHA512:RSA+SHA384:DSA+SHA384:ECDSA+SHA384:RSA+SHA256:DSA+SHA256:ECDSA+SHA256:RSA+SHA224:DSA+SHA224:ECDSA+SHA224:RSA+SHA1:DSA+SHA1:ECDSA+SHA1
Shared Requested Signature Algorithms: RSA+SHA512:DSA+SHA512:ECDSA+SHA512:RSA+SHA384:DSA+SHA384:ECDSA+SHA384:RSA+SHA256:DSA+SHA256:ECDSA+SHA256:RSA+SHA224:DSA+SHA224:ECDSA+SHA224:RSA+SHA1:DSA+SHA1:ECDSA+SHA1
Peer signing digest: SHA512
Server Temp Key: ECDH, P-384, 384 bits
---
SSL handshake has read 3882 bytes and written 381 bytes
Verification: OK
---
New, TLSv1.2, Cipher is ECDHE-RSA-AES256-GCM-SHA384
Server public key is 4096 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
    Protocol  : TLSv1.2
    Cipher    : ECDHE-RSA-AES256-GCM-SHA384
    Session-ID:
    Session-ID-ctx:
    Master-Key: 91CC65F416FF7EA20324BC3EEDFB4D5DBBC8C8B937617649D630C565E6E3D74053A069CFAFE24B63F914AB00DA4FF1D1
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    Start Time: 1528364693
    Timeout   : 7200 (sec)
    Verify return code: 0 (ok)
    Extended master secret: yes
---

Der Status zum XMPP-Server intux.de kann man hier abfragen.

3 Kommentare

Kommentieren Sie den Artikel

Bitte bestätige diesen Kommentar!
Bitte den Namen hier eingeben

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.