Provisionner un service RabbitMQ sur Ecloud dans une machine virtuelle Debian


Approvisionnement dans ECloud

Accès au serveur

Vous verrez l’IP de la machine dans l’onglet Deployment sous le champs Address.
Le port 4200 sert pour le protocole AMQP.
Le port 4201 sert pour accéder à l’interface de gestion web.

Accès à l’interface de gestion

Ouvrez un navigateur web et rendez-vous à l’adresse:
http://<ADRESSE_IP_VM>:4201
Utilisez les identifiants du serveur RabbitMQ pour vous connecter à l’interface de gestion.


A ce stade le serveur est prêt à l’utilisation.


Configurer RabbitMQ avec SSL/TLS

Ce guide documente étape par étape la configuration de RabbitMQ avec TLS/SSL afin de sécuriser les communications :

Seuls les ports de 4200 à 4210 sont autorisés pour les étudiants.


Connectez vous à la VM avec les identifiants définis à la création de cette infrastructure.

Étape 1 – Modifier le fichier de configuration RabbitMQ

Éditer le fichier avec sudo nano /etc/rabbitmq/rabbitmq.conf.

Supprimer les lignes suivantes:

# Port AMQP
# listeners.tcp.default = 4200
# Port pour l’interface de management (web UI)
# management.listener.port = 4201

Ajouter à la place :

# ================================
# TLS pour AMQP (AMQPS)
# ================================
listeners.ssl.default = 4200
ssl_options.cacertfile = /etc/rabbitmq/ssl/server.crt
ssl_options.certfile   = /etc/rabbitmq/ssl/server.crt
ssl_options.keyfile    = /etc/rabbitmq/ssl/server.key
ssl_options.verify     = verify_none
ssl_options.fail_if_no_peer_cert = false

# ================================
# TLS pour l'interface web
# ================================
management.ssl.port       = 4201
management.ssl.cacertfile = /etc/rabbitmq/ssl/server.crt
management.ssl.certfile   = /etc/rabbitmq/ssl/server.crt
management.ssl.keyfile    = /etc/rabbitmq/ssl/server.key
management.ssl.verify     = verify_none
management.ssl.fail_if_no_peer_cert = false

Sauvegardez les modifications avec Ctrl+s et fermez le fichier avec Ctrl+x.


Étape 2 – Générer les certificats SSL

Dans un terminal sur la VM :

sudo mkdir -p /etc/rabbitmq/ssl
cd /etc/rabbitmq/ssl

# Créer la clé privée
sudo openssl genrsa -out server.key 2048

# Créer le certificat auto-signé
sudo openssl req -new -x509 -key server.key -out server.crt -days 365

# Générer un fichier PEM combiné
sudo cat server.key server.crt | sudo tee /etc/rabbitmq/ssl/server.pem > /dev/null

Lors de la génération, indiquer localhost comme Common Name (CN) pour éviter les erreurs de vérification.


Étape 3 – Autoriser le serveur RabbitMQ à lire les certificats SSL

sudo chown rabbitmq:rabbitmq /etc/rabbitmq/ssl/server.*
sudo chmod 640 /etc/rabbitmq/ssl/server.key
sudo chmod 644 /etc/rabbitmq/ssl/server.crt

Étape 4 – Redémarrer RabbitMQ

sudo systemctl restart rabbitmq-server

Étape 5 – Vérifier l’interface web sécurisée

Ouvrir un navigateur sur l’URL :

https://<IP_VM>:4201

Il est normal qu’un avertissement s’affiche avec un certificat auto-signé.


Étape 6 – Tester AMQPS avec Python

Installer les outils nécessaires

sudo apt install python3-pip
sudo apt install python3.11-venv

Créer un environnement virtuel Python

python3 -m venv mon_env
source mon_env/bin/activate
pip install pika

Script Python de test

Créer un fichier prog.py avec le contenu suivant :

import pika
import ssl

context = ssl.create_default_context(cafile="/etc/rabbitmq/ssl/server.crt")
context.check_hostname = False
context.verify_mode = ssl.CERT_REQUIRED

credentials = pika.PlainCredentials("Identifiant", "MotDePasse")

connection = pika.BlockingConnection(
    pika.ConnectionParameters(
        host='localhost',
        port=4200,
        ssl_options=pika.SSLOptions(context),
        credentials=credentials
    )
)

print("Connexion AMQPS réussie !")

Pensez à remplacer (“Identifiant”, “MotDePasse”) par le login et mot de passe que vous avez définis lors de la création du serveur.
Lancez votre programme de test:

python3 prog.py

Si tout fonctionne, le script affichera :

Connexion AMQPS réussie !


Remarques sur le déploiement via une VM sous Debian

Accès Root

Durée d’utilisation

Pour supprimer un déploiements, allez dans la page de vos déploiements.
Cliquez sur les trois points verticaux et puis choissiez Delete et puis Submit
Suppression Déploiement