XEP-0368 auf dem Prosody XMPP-Server

3
5397
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

Schreibe einen Kommentar zu intux Antwort abbrechen

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.