Certificado TLS funcional para el servidor jabberd2

Certificado TLS funcional para el servidor jabberd2

Quiero ejecutar un servidor jabberd2 (V 2.40) con conexiones de cliente seguras.
Seguí las instrucciones de la documentación y el servidor está funcionando:
https://github.com/jabberd2/jabberd2/wiki/InstallGuide-OpenSSLConfiguration

Pero parece que no existe una conexión de cliente segura.
Cuando sigo las sugerencias para solicitar el certificado, no hay ningún certificado de pares:
Obtener la cadena de certificados SSL del servidor Jabber

openssl s_client -connect my.jabber.server.net:5222 </dev/null

CONNECTED(00000003)
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 648 bytes and written 117 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE

La configuración real es

  <local>
         <pemfile>/etc/jabberd2/jabber.pem</pemfile>
         <verify-mode>7</verify-mode>
         <require-starttls>1</require-starttls>
         <ciphers>EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH</ciphers>
    <id register-enable='mu'>domainname.de</id>
  </local>

Siguiendo las sugerencias en c2s.xml, modifiqué esto para

  <local>
    <id realm='domainname.de'
        pemfile='/etc/jabberd2/jabber.pem'
        ciphers='EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH'
        verify-mode='7'
        require-starttls='mu'
        instructions='Geben Sie einen gueltigen Benutzernamen mit Passwort an um einzuloggen!'
    >domainname.de</id>
    <id password-change='mu' />
  </local>

Entonces la prueba de openssl es exitosa con

---
No client certificate CA names sent
---
SSL handshake has read 1700 bytes and written 138 bytes
---
New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES256-GCM-SHA384
Server public key is 1024 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
SSL-Session:
    Protocol  : TLSv1.2
    Cipher    : ECDHE-RSA-AES256-GCM-SHA384
    Session-ID:
    Session-ID-ctx:
    Master-Key: 720846E32D...CA23
    Key-Arg   : None
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    Start Time: 1484331794
    Timeout   : 300 (sec)
    Verify return code: 18 (self signed certificate)
---

¡Pero ahora NINGÚN cliente se conectará al servidor!
¡Lo probé con pidgin y psi y ambos informan un error de protocolo de enlace SSL!

Leyendo el ejemplo c2s.xml encuentro:

<id realm='company.int'
    pemfile='/etc/jabberd2/server.pem'
    verify-mode='7'
    cachain='/etc/jabberd2/client_ca_certs.pem'
    require-starttls='mu'
    register-enable='mu'
    instructions='Enter a username and password to register with this server.'
    register-oob='http://example.org/register'
    password-change='mu'
>example.net</id>

Entonces, ¿tal vez falta client_ca_certs.pem?
¿Pero no tengo idea de cómo generarlo?

Cualquier ayuda sería fantástica.

Respuesta1

Jabber usa la extensión del protocolo STARTTLS en el puerto 5222, por lo que debe habilitar la extensión -starttls xmppal realizar la prueba:

openssl s_client -connect my.jabber.server.net:5222 -starttls xmpp </dev/null

Todas las opciones de conexión para 5222 hosts virtuales se configuran directamente como atributos en <id ... />la etiqueta.

La creación de túneles XMPP directos en SSL es posible en el puerto 5223 cuando está habilitado. Las opciones que configura como etiquetas en <local> ... <pemfile> etc...configuran el puerto 5223. Si habilita esto, puede probar sin -startlsopción como lo intentó:

openssl s_client -connect my.jabber.server.net:5223 </dev/null

información relacionada