2 votes

RabbitMQ TLS clustering - "sécurité insuffisante".

Je suis en train de mettre en place un cluster RabbitMQ où il est nécessaire que toutes les communications au sein du cluster soient cryptées.

J'ai suivi le guide à https://www.rabbitmq.com/clustering-ssl.html - crée un fichier avec le certificat et la clé, et transmet les arguments SSL à rabbitmq-server sous forme de variables d'environnement :

RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS='-pa /usr/lib/erlang/lib/ssl-7.1/ebin -proto_dist inet_tls -ssl_dist_opt server_certfile /etc/ssl/certs/rabbit.pem'
RABBITMQ_CTL_ERL_ARGS='-pa /usr/lib/erlang/lib/ssl-7.1/ebin -proto_dist inet_tls -ssl_dist_opt server_certfile /etc/ssl/certs/rabbit.pem'

Le serveur démarre correctement et écoute avec TLS activé, mais je ne peux pas lui envoyer de commandes via rabbitmqctl :

# rabbitmqctl status
Status of node rabbit@rabbit01 ...
Error: unable to connect to node rabbit@rabbit01: nodedown

DIAGNOSTICS
===========

attempted to contact: [rabbit@rabbit01]

rabbit@rabbit01:
  * connected to epmd (port 4369) on rabbit01
  * epmd reports node 'rabbit' running on port 47965
  * TCP connection succeeded but Erlang distribution failed
  * suggestion: hostname mismatch?
  * suggestion: is the cookie set correctly?
  * suggestion: is the Erlang distribution using TLS?

Du côté du serveur, je n'obtiens pas grand-chose dans les journaux, si ce n'est des informations totalement inutiles :

=ERROR REPORT==== 30-Dec-2015::13:08:58 ===
SSL: hello: tls_handshake.erl:167:Fatal error: insufficient security

En cherchant un peu, j'ai appris que cela pouvait être dû à une erreur de suite de chiffrement, mais j'ai cru comprendre qu'ils utilisaient tous les deux la même bibliothèque SSL.

La prise en charge de SSL par Erlang est activée, comme vérifié sur la page https://www.rabbitmq.com/troubleshooting-ssl.html et je peux établir une connexion sécurisée avec le certificat grâce aux fonctions s_server et s_client d'openssl.

Je ne sais pas quelle serait la prochaine étape pour résoudre ce problème, et je n'ai pu trouver aucun problème connu autour du clustering - malheureusement, la plupart de la documentation de RabbitMQ concernant TLS est pour le protocole AMQP et non pour le clustering interne.


J'ai également testé l'utilisation d'openSSL pour me connecter à l'instance RabbitMQ en cours d'exécution et j'ai obtenu une erreur très similaire :

# openssl s_client -connect localhost:47965
CONNECTED(00000003)
140004605863584:error:1407742F:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert insufficient security:s23_clnt.c:770:
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 7 bytes and written 295 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
---

 openssl s_client -connect localhost:47965 -tls1_2
CONNECTED(00000003)
140400037775008:error:1409442F:SSL routines:SSL3_READ_BYTES:tlsv1 alert insufficient security:s3_pkt.c:1262:SSL alert number 71
140400037775008:error:1409E0E5:SSL routines:SSL3_WRITE_BYTES:ssl handshake failure:s3_pkt.c:598:
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 7 bytes and written 0 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
SSL-Session:
    Protocol  : TLSv1.2
    Cipher    : 0000
    Session-ID:
    Session-ID-ctx:
    Master-Key:
    Key-Arg   : None
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    Start Time: 1451944018
    Timeout   : 7200 (sec)
    Verify return code: 0 (ok)
---

0voto

user9869932 Points 271

Il peut s'agir d'une erreur de suite de chiffrement ou de version TLS (par exemple, un client est limité à TLSv1 mais RabbitMQ est configuré pour exiger TLSv1.2). mais peut aussi être dû à des champs subtils d'utilisation de clés dans le certificat. Ce dernier cas est particulièrement difficile à détecter.

Voir [1][2][3][4][5].

  1. https://www.rabbitmq.com/troubleshooting-ssl.html
  2. https://www.rabbitmq.com/ssl.html#tls-versions
  3. https://www.rabbitmq.com/ssl.html#cipher-suites
  4. https://www.rabbitmq.com/ssl.html#tls-evaluation-tools
  5. https://www.rabbitmq.com/ssl.html#key-usage

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X