SSL.
Jabber nos permite el uso de Secure Sockets Layer en las comunicaciones entre los clientes y el servidor, mediante el uso de una clave pública certificada y una clave privada. Por motivos económicos, nosotros mismos nos vamos a certificar nuestra clave pública en el siguiente ejemplo :-P
Ante todo, necesitamos el paquete openssl para la generación del par de claves.
$ apt-get install openssl
Primero generamos el par de claves. Si no nos gusta el algoritmo RSA, puede usarse el que queramos (siempre y cuando siga un esquema de clave pública-privada). Conviene no abusar de la longitud de la clave bajo pena de cargar en exceso el procesador del servidor (!y del cliente!) Además, la longitud de la clave seguro que no es el eslabón más débil en el servidor que vaya a montarse };-)
$ openssl req -new -x509 -newkey rsa:1024 -keyout priv.pem -out key.pem
Una vez hemos contestado todas las preguntas acerca de la generación de la clave, eliminamos la contraseña para acceder a la clave privada, y agrupamos la clave pública "certificada" con la clave privada:
$ openssl rsa -in priv.pem -out priv.pem
$ cat priv.pem >> key.pem
$ rm priv.pem
El archivo key.pem puede situarse en, por ejemplo, /etc/jabber/key.pem. Ya que la clave privada no está protegida con un password, conviene establecer medidas extra mediante el uso de permisos (400) y establecer como dueño del archivo al mismo usuario bajo el cual "jabberd" estará funcionando (usuario daemon en nuestro caso).
A continuación debemos realizar una serie de modificaciones en la configuración para activar el uso de SSL.
Dentro de la etiquieta <load main="jsm"> debemos señalar correctamente el orden de los tipos de autentificación que el servidor intentará utilizar con el cliente. Si lo encontráis necesario, podéis comentar la linea que permite la autentificación mediante la transmisión en plano del password de la cuenta:
...
<mod_auth_0k>./jsm/jsm.so</mod_auth_0k>
<mod_auth_digest>./jsm/jsm.so</mod_auth_digest>
<mod_auth_plain>./jsm/jsm.so</mod_auth_plain>
...
A continuación, y situado dentro del service id="c2s", activamos el puerto a usar para las comunicaciones mediante SSL. Debe especificarse una IP, y si queremos que el servicio sea público la IP también debe serlo:
<ssl port="5223">130.206.130.95</ssl>
El siguiente paso es configurar el path al archivo con las claves. Ello se realiza dentro de la etiqueta <io>:
<ssl>
<key ip='130.206.130.95'>/etc/jabber/key.pem</key>
</ssl>
A continuación sólo falta reiniciar el servidor y activar el soporte de SSL en los clientes. |