
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 xmpp
al 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 -startls
opción como lo intentó:
openssl s_client -connect my.jabber.server.net:5223 </dev/null