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.
Sur cette page
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.
-
Créez une nouvelle configuration à l'aide de la commande
create-configurationAWS 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" } -
Créez un fichier de configuration appelé
rabbitmq.confpour 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} -
Mettez à jour la configuration à l'aide de la commande
update-configurationAWS 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": [] } -
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-brokerAWS 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-eb15b38b22caet2.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" } -
Vérifiez que le statut du broker passe de à
RUNNING,CREATION_IN_PROGRESSà l'aide de la commandedescribe-brokerAWS 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-brokercommande.{ "AuthenticationStrategy": "simple", ..., "BrokerState": "RUNNING", ... } -
Vérifiez l'authentification mTLS à l'aide du
mtls.shscript 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_REFUSEDmessage 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 :
-
USERNAMEetPASSWORD: 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.p12KEYSTORE_PASSWORD=changeitBROKER_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 -