Utilisation de MTL pour l'AMQP et les points de terminaison de gestion - Amazon MQ

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Utilisation de MTL pour l'AMQP et les points de terminaison de gestion

Ce didacticiel explique comment configurer le protocole TLS mutuel (MTL) pour les connexions client AMQP et l'interface de gestion RabbitMQ à l'aide d'une autorité de certification privée.

Note

L'utilisation d'autorités de certification privées pour les MTL n'est disponible que pour Amazon MQ pour RabbitMQ version 4 et supérieure.

Conditions préalables à la configuration des mTLs

Vous pouvez configurer les AWS ressources requises dans ce didacticiel en déployant la pile AWS CDK pour Amazon MQ pour l'intégration de mTLS avec RabbitMQ.

Cette pile CDK crée automatiquement toutes les AWS ressources nécessaires, y compris l'autorité de certification, les certificats clients et les rôles IAM. Consultez le package README pour une liste complète des ressources créées par la pile.

Si vous configurez les ressources manuellement au lieu d'utiliser la pile CDK, assurez-vous de disposer de l'infrastructure équivalente avant de configurer les MTL sur votre Amazon MQ pour les courtiers RabbitMQ.

Prérequis pour configurer Amazon MQ

AWS Version CLI >= 2.28.23 pour rendre l'ajout d'un nom d'utilisateur et d'un mot de passe facultatif lors de la création du broker.

Configuration de MTL dans RabbitMQ à l'aide de la CLI AWS

Cette procédure utilise la AWS CLI pour créer et configurer les ressources nécessaires. Dans la procédure suivante, assurez-vous de remplacer les valeurs d'espace réservé, telles que ConfigurationID et Revision<2>, <c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca> par leurs valeurs réelles.

  1. Créez une nouvelle configuration à l'aide de la commande create-configuration AWS CLI comme indiqué dans l'exemple suivant.

    aws mq create-configuration \ --name "rabbitmq-mtls-config" \ --engine-type "RABBITMQ" \ --engine-version "4.2"

    Cette commande renvoie une réponse similaire à l'exemple suivant.

    { "Arn": "arn:aws:mq:us-west-2:123456789012:configuration:c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca", "AuthenticationStrategy": "simple", "Created": "2025-07-17T16:03:01.759943+00:00", "Id": "c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca", "LatestRevision": { "Created": "2025-07-17T16:03:01.759000+00:00", "Description": "Auto-generated default for rabbitmq-mtls-config on RabbitMQ 4.2", "Revision": 1 }, "Name": "rabbitmq-mtls-config" }
  2. Créez un fichier de configuration appelé rabbitmq.conf pour configurer les MTL pour l'AMQP et les points de terminaison de gestion, comme indiqué dans l'exemple suivant. Remplacez toutes les valeurs d'espace réservé du modèle (marquées d'un${...}) par des valeurs réelles provenant de vos sorties de pile AWS CDK prérequises déployées ou d'une infrastructure équivalente.

    auth_backends.1 = internal # TLS configuration ssl_options.verify = verify_peer ssl_options.fail_if_no_peer_cert = true management.ssl.verify = verify_peer # AWS integration for secure credential retrieval # For more information, see https://github.com/amazon-mq/rabbitmq-aws # FIXME: Replace the ${...} placeholders with actual ARN values # from your deployed prerequisite CDK stack outputs. aws.arns.assume_role_arn = ${AmazonMqAssumeRoleArn} aws.arns.ssl_options.cacertfile = ${CaCertArn} aws.arns.management.ssl.cacertfile = ${CaCertArn}
  3. Mettez à jour la configuration à l'aide de la commande update-configuration AWS CLI comme indiqué dans l'exemple suivant. Dans cette commande, ajoutez l'ID de configuration que vous avez reçu en réponse à l'étape 1 de cette procédure. Par exemple, c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca.

    aws mq update-configuration \ --configuration-id "<c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca>" \ --data "$(cat rabbitmq.conf | base64 --wrap=0)"

    Cette commande renvoie une réponse similaire à l'exemple suivant.

    { "Arn": "arn:aws:mq:us-west-2:123456789012:configuration:c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca", "Created": "2025-07-17T16:57:04.520931+00:00", "Id": "c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca", "LatestRevision": { "Created": "2025-07-17T16:57:39.172000+00:00", "Revision": 2 }, "Name": "rabbitmq-mtls-config", "Warnings": [] }
  4. Créez un broker avec la configuration mTLS que vous avez créée à l'étape 2 de cette procédure. Pour ce faire, utilisez la commande create-broker AWS CLI comme indiqué dans l'exemple suivant. Dans cette commande, indiquez l'ID de configuration et le numéro de révision que vous avez obtenus dans les réponses des étapes 1 et 2 respectivement. Par exemple : c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca et 2.

    aws mq create-broker \ --broker-name "rabbitmq-mtls-test-1" \ --engine-type "RABBITMQ" \ --engine-version "4.2" \ --host-instance-type "mq.m7g.large" \ --deployment-mode "SINGLE_INSTANCE" \ --logs '{"General": true}' \ --publicly-accessible \ --configuration '{"Id": "<c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca>","Revision": <2>}' \ --users '[{"Username":"testuser","Password":"testpassword"}]'

    Cette commande renvoie une réponse similaire à l'exemple suivant.

    { "BrokerArn": "arn:aws:mq:us-west-2:123456789012:broker:rabbitmq-mtls-test-1:b-2a1b5133-a10c-49d2-879b-8c176c34cf73", "BrokerId": "b-2a1b5133-a10c-49d2-879b-8c176c34cf73" }
  5. Vérifiez que le statut du broker passe de àRUNNING, CREATION_IN_PROGRESS à l'aide de la commande describe-broker AWS CLI, comme indiqué dans l'exemple suivant. Dans cette commande, indiquez l'ID du courtier que vous avez obtenu dans le résultat de l'étape précédente. Par exemple, b-2a1b5133-a10c-49d2-879b-8c176c34cf73.

    aws mq describe-broker \ --broker-id "<b-2a1b5133-a10c-49d2-879b-8c176c34cf73>"

    Cette commande renvoie une réponse similaire à l'exemple suivant. La réponse suivante est une version abrégée de la sortie complète renvoyée par la describe-broker commande.

    { "AuthenticationStrategy": "simple", ..., "BrokerState": "RUNNING", ... }
  6. Vérifiez l'authentification mTLS à l'aide du mtls.sh script suivant.

    Utilisez ce script bash pour tester la connectivité à votre courtier Amazon MQ for RabbitMQ. Ce script utilise votre certificat client pour authentifier et vérifier si la connexion a été correctement configurée. S'il est correctement configuré, vous verrez votre courtier publier et consommer des messages.

    Si vous recevez un ACCESS_REFUSED message d'erreur, vous pouvez résoudre les problèmes liés à vos paramètres de configuration en utilisant les CloudWatch journaux de votre courtier. Vous trouverez le lien vers le groupe de CloudWatch journaux de votre courtier dans la console Amazon MQ.

    Dans ce script, vous devez fournir les valeurs suivantes :

    • USERNAMEet PASSWORD : les informations d'identification utilisateur RabbitMQ que vous avez créées avec le courtier.

    • CLIENT_KEYSTORE: chemin d'accès au fichier keystore de votre client (PKCS12 format). Si vous avez utilisé la pile CDK requise, le chemin par défaut est$(pwd)/certs/client-keystore.p12.

    • KEYSTORE_PASSWORD: mot de passe pour le keystore de votre client. Si vous avez utilisé la pile CDK requise, le mot de passe par défaut estchangeit.

    • BROKER_DNS: vous pouvez trouver cette valeur sous Connexions sur la page des informations du courtier de la console Amazon MQ.

    #! /bin/bash set -e # Client information ## FIXME: Update this value with the client ID and secret of your confidential application client USERNAME=<testuser> PASSWORD=<testpassword> CLIENT_KEYSTORE=$(pwd)/certs/client-keystore.p12 KEYSTORE_PASSWORD=changeit BROKER_DNS=<broker_dns> CONNECTION_STRING=amqps://${USERNAME}:${PASSWORD}@${BROKER_DNS}:5671 # Produce/consume messages using the above connection string QUEUES_COUNT=1 PRODUCERS_COUNT=1 CONSUMERS_COUNT=1 PRODUCER_RATE=1 finch run --rm --ulimit nofile=40960:40960 \ -v ${CLIENT_KEYSTORE}:/certs/client-keystore.p12:ro \ -e JAVA_TOOL_OPTIONS="-Djavax.net.ssl.keyStore=/certs/client-keystore.p12 -Djavax.net.ssl.keyStorePassword=${KEYSTORE_PASSWORD} -Djavax.net.ssl.keyStoreType=PKCS12" \ pivotalrabbitmq/perf-test:latest \ --queue-pattern 'test-queue-cert-%d' --queue-pattern-from 1 --queue-pattern-to $QUEUES_COUNT \ --producers $PRODUCERS_COUNT --consumers $CONSUMERS_COUNT \ --id "cert-test${QUEUES_COUNT}q${PRODUCERS_COUNT}p${CONSUMERS_COUNT}c${PRODUCER_RATE}r" \ --uri ${CONNECTION_STRING} \ --use-default-ssl-context \ --flag persistent --rate $PRODUCER_RATE