# [gelöst] Problem mit Prosody und verschlüsselten Verbindungen



## Jimini (27. Juni 2015)

*[gelöst] Problem mit Prosody und verschlüsselten Verbindungen*

Aloha,

nachdem ejabberd sich erneut als ziemlich zickiges Stück Software herausgestellt hat, bin ich auf Prosody umgestiegen. Wenn ich unverschlüsselte Verbindungen von den Clients zum Server zulasse, funktioniert alles wunderbar, nur mit aktivierter will partout keine Verbindung aufgebaut werden. Aus irgendeinem Grund scheinen die Clients die selbstsignierten Zertifikate nicht zu akzeptieren.

Meine Config:

```
admins = { "admin@virtualhost1" }

modules_enabled = {

                "roster"; -- Allow users to have a roster. Recommended ;)
                "saslauth"; -- Authentication for clients and servers. Recommended if you want to log in.
                "tls"; -- Add support for secure TLS on c2s/s2s connections
                "dialback"; -- s2s dialback support
                "disco"; -- Service discovery
                "private"; -- Private XML storage (for room bookmarks, etc.)
                "vcard"; -- Allow users to set vCards
                --"privacy"; -- Support privacy lists
                --"compression"; -- Stream compression (Debian: requires lua-zlib module to work)
                "version"; -- Replies to server version requests
                "uptime"; -- Report how long server has been running
                "time"; -- Let others know the time here on this server
                "ping"; -- Replies to XMPP pings with pongs
                "pep"; -- Enables users to publish their mood, activity, playing music and more
                "register"; -- Allow users to register on this server using a client and change passwords
                "admin_adhoc"; -- Allows administration via an XMPP client that supports ad-hoc commands
                --"admin_telnet"; -- Opens telnet console interface on localhost port 5582
                --"bosh"; -- Enable BOSH clients, aka "Jabber over HTTP"
                --"http_files"; -- Serve static files from a directory over HTTP
                "posix"; -- POSIX functionality, sends server to background, enables syslog, etc.
                --"groups"; -- Shared roster support
                --"announce"; -- Send announcement to all online users
                "welcome"; -- Welcome users who register accounts
                "watchregistrations"; -- Alert admins of registrations
                --"motd"; -- Send a message to users when they log in
                "legacyauth"; -- Legacy authentication. Only used by some old clients and bots.
};

modules_disabled = {
};

allow_registration = false;

daemonize = true;

pidfile = "/var/run/prosody/prosody.pid";

ssl = {
        key = "/etc/prosody/certs/cert.key";
        certificate = "/etc/prosody/certs/cert.crt";
}

c2s_require_encryption = true

s2s_secure_auth = false

authentication = "internal_plain"

storage = "sql" -- Default is "internal" (Debian: "sql" requires one of the

sql = { driver = "MySQL", database = "prosody", username = "USER", password = "PASS", host = "localhost" }

log = {
        -- Log files (change 'info' to 'debug' for debug logs):
        debug = "/var/log/prosody/prosody.debug";
        info = "/var/log/prosody/prosody.log";
        error = "/var/log/prosody/prosody.err";
        -- Syslog:
--      { levels = { "error" }; to = "syslog";  };
}

VirtualHost "virtualhost1"

VirtualHost "virtualhost2"
```

Fehler werden keine geloggt. Versucht sich ein Client zu verbinden, erscheint im Debuglog folgendes:

```
Jun 27 07:08:42 socket  debug   server.lua: accepted new client connection from PRIVATE_IP_ADDRESS:59539 to 5222
Jun 27 07:08:42 c2s2923750      info    Client connected
Jun 27 07:08:42 c2s2923750      debug   Client sent opening <stream:stream> to virtualhost1
Jun 27 07:08:42 c2s2923750      debug   Sent reply <stream:stream> to client
Jun 27 07:08:42 c2s2923750      debug   Received[c2s_unauthed]: <starttls xmlns='urn:ietf:params:xml:ns:xmpp-tls'>
Jun 27 07:08:42 socket  debug   server.lua: we need to do tls, but delaying until send buffer empty
Jun 27 07:08:42 c2s2923750      debug   TLS negotiation started for c2s_unauthed...
Jun 27 07:08:42 socket  debug   server.lua: attempting to start tls on tcp{client}: 0x2920088
Jun 27 07:08:42 socket  debug   server.lua: ssl handshake done
Jun 27 07:08:42 socket  debug   server.lua: client PRIVATE_IP_ADDRESS:59539 read error: closed
Jun 27 07:08:42 c2s2923750      info    Client disconnected: closed
Jun 27 07:08:42 c2s2923750      debug   Destroying session for (unknown) ((unknown)@virtualhost1): closed
Jun 27 07:08:42 socket  debug   server.lua: closed client handler and removed socket from list
```

Pidgin vermerkt folgende Fehler:


> (07:28:50) nss: CERT 1. E=info@virtualhost1,CN=hostname_meines_servers,OU=XMPP Department,O=Your Organisation,L=The Internet,C=DE [Certificate Authority]:
> (07:28:50) nss:   ERROR -8156: SEC_ERROR_CA_CERT_INVALID
> (07:28:50) nss:   ERROR -8102: SEC_ERROR_INADEQUATE_KEY_USAGE
> (07:28:50) nss:   ERROR -8172: SEC_ERROR_UNTRUSTED_ISSUER
> (07:28:50) certificate: Failed to verify certificate for virtualhost1





> Das Zertifikat für XYZ konnte nicht überprüft werden. Die präsentierte Zertifikatskette ist ungültig.



Die Zertifikate habe ich wie hier beschrieben erstellt.

Hat jemand eine Idee, wo der Fehler liegen könnte?

MfG Jimini

*Nachtrag*:

Nachdem ich nun weiter recherchiert habe, bin ich auf die Lösung gestoßen - offensichtlich scheint Prosodys Tool zum Erstellen von Zertifikaten nicht ganz sauber mit Pidgin zusammenzuarbeiten. Mit Psi hingegen klappte das Verbinden problemlos.
Es waren folgende Befehle zum Erstellen eines neuen Zertifikats notwendig:


> openssl genrsa -out /etc/prosody/certs/prosody.key 2048
> openssl req -new -x509 -key /etc/prosody/certs/prosody.key -out /etc/prosody/certs/prosody.cert -days 3650



Danach meckerte Pidgin nicht mehr und konnte sich problemlos mit dem Server verbinden


----------



## Rho (29. Juni 2015)

*AW: [gelöst] Problem mit Prosody und verschlüsselten Verbindungen*

Machen selbst signierte Zertifikate keine Probleme bei Verbindungen zu anderen Servern? Oder nutzt du keine _XMPP Federation_?


----------



## Jimini (29. Juni 2015)

*AW: [gelöst] Problem mit Prosody und verschlüsselten Verbindungen*



Rho schrieb:


> Machen selbst signierte Zertifikate keine Probleme bei Verbindungen zu anderen Servern? Oder nutzt du keine _XMPP Federation_?


Leider ist es mit selbst signierten Zertifikaten meines Wissens nicht möglich, eine verschlüsselte Verbindung zwischen meinem und anderen XMPP-Servern aufzubauen. Daher darf diese Verbindung dann unverschlüsselt aufgebaut werden. Ist zwar nicht toll, geht aber bislang leider nicht anders.

MfG Jimini


----------



## Rho (1. Juli 2015)

*AW: [gelöst] Problem mit Prosody und verschlüsselten Verbindungen*

Warum kein kostenloses Zertifikat von z.B. CAcert oder StartSSL? Inzwischen erzwingen ja immer mehr XMPP-Server eine verschlüsselte Verbindung. Unsere beiden Server könnten z.B. derzeit gar nicht miteinander kommunizieren.


----------



## Jimini (1. Juli 2015)

*AW: [gelöst] Problem mit Prosody und verschlüsselten Verbindungen*

Gute Frage. Da habe ich aktuell keine Antwort drauf, wahrscheinlich war es die Macht der Gewohnheit 
Danke für den Hinweis! 

MfG Jimini


----------



## Rho (1. Juli 2015)

*AW: [gelöst] Problem mit Prosody und verschlüsselten Verbindungen*

Bei der Verbreitung von XMPP bin ich immer gerne behilflich.

Wirst du eventuell schon kennen. Ist ganz nett, um ein paar grundlegende Einstellungen zu überprüfen: https://xmpp.net/


----------

