Utilizzo dell'autenticazione del certificato SSL per Amazon MQ for RabbitMQ - Amazon MQ

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Utilizzo dell'autenticazione del certificato SSL per Amazon MQ for RabbitMQ

Questo tutorial descrive come configurare l'autenticazione del certificato SSL per i broker Amazon MQ for RabbitMQ utilizzando un'autorità di certificazione privata.

Nota

Il plug-in di autenticazione del certificato SSL è disponibile solo per Amazon MQ for RabbitMQ versione 4 e successive.

Prerequisiti per configurare l'autenticazione del certificato SSL

L'autenticazione dei certificati SSL utilizza il protocollo TLS reciproco (mTLS) per autenticare i client utilizzando i certificati X.509. Puoi configurare le AWS risorse richieste in questo tutorial distribuendo lo stack AWS CDK per l'integrazione con Amazon MQ for RabbitMQ MTL.

Questo stack CDK crea automaticamente tutte le AWS risorse necessarie, tra cui l'autorità di certificazione, i certificati client e i ruoli IAM. Consulta il pacchetto README per un elenco completo delle risorse create dallo stack.

Nota

Prima di distribuire lo stack CDK, imposta la variabile di ambiente. RABBITMQ_TEST_USER_NAME Questo valore verrà utilizzato come nome comune (CN) nel certificato client e deve corrispondere al nome utente utilizzato nei passaggi del tutorial. Ad esempio: export RABBITMQ_TEST_USER_NAME="myuser"

Se stai configurando le risorse manualmente anziché utilizzare lo stack CDK, assicurati di disporre dell'infrastruttura equivalente prima di configurare l'autenticazione del certificato SSL sui tuoi broker Amazon MQ for RabbitMQ.

Prerequisito per configurare Amazon MQ

AWS Versione CLI >= 2.28.23 per rendere opzionale l'aggiunta di un nome utente e una password durante la creazione del broker.

Configurazione dell'autenticazione del certificato SSL in RabbitMQ tramite CLI AWS

Questa procedura utilizza la AWS CLI per creare e configurare le risorse necessarie. Nella procedura seguente, assicuratevi di sostituire i valori segnaposto, come ConfigurationID e Revision, con i relativi valori <c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca> effettivi<2>.

  1. Creare una nuova configurazione utilizzando il comando create-configuration AWS CLI, come illustrato nell'esempio seguente.

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

    Questo comando restituisce una risposta simile all'esempio seguente.

    { "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-ssl-config on RabbitMQ 4.2", "Revision": 1 }, "Name": "rabbitmq-ssl-config" }
  2. Crea un file di configurazione chiamato rabbitmq.conf per utilizzare l'autenticazione del certificato SSL, come illustrato nell'esempio seguente. Sostituisci tutti i valori segnaposto nel modello (contrassegnati con${...}) con i valori effettivi degli output dello stack dei AWS CDK prerequisiti implementati o dell'infrastruttura equivalente.

    auth_mechanisms.1 = EXTERNAL ssl_cert_login_from = common_name auth_backends.1 = internal # Reject if no client cert ssl_options.verify = verify_peer ssl_options.fail_if_no_peer_cert = true # 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}
  3. Aggiornate la configurazione utilizzando il comando update-configuration AWS CLI come illustrato nell'esempio seguente. In questo comando, aggiungi l'ID di configurazione ricevuto nella risposta del passaggio 1 di questa procedura. Ad esempio, 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)"

    Questo comando restituisce una risposta simile all'esempio seguente.

    { "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-ssl-config", "Warnings": [] }
  4. Crea un broker con la configurazione di autenticazione del certificato SSL creata nel passaggio 2 di questa procedura. A tale scopo, utilizzate il comando create-broker AWS CLI come illustrato nell'esempio seguente. In questo comando, fornite l'ID di configurazione e il numero di revisione ottenuti rispettivamente nelle risposte dei passaggi 1 e 2. Ad esempio c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca e 2.

    aws mq create-broker \ --broker-name "rabbitmq-ssl-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"}]'

    Questo comando restituisce una risposta simile all'esempio seguente.

    { "BrokerArn": "arn:aws:mq:us-west-2:123456789012:broker:rabbitmq-ssl-test-1:b-2a1b5133-a10c-49d2-879b-8c176c34cf73", "BrokerId": "b-2a1b5133-a10c-49d2-879b-8c176c34cf73" }
  5. Verifica che lo stato del broker passi da CREATION_IN_PROGRESS aRUNNING, utilizzando il comando describe-broker AWS CLI come mostrato nell'esempio seguente. In questo comando, fornisci l'ID del broker che hai ottenuto nel risultato del passaggio precedente. Ad esempio, b-2a1b5133-a10c-49d2-879b-8c176c34cf73.

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

    Questo comando restituisce una risposta simile all'esempio seguente. La risposta seguente è una versione abbreviata dell'output completo restituito dal describe-broker comando. Questa risposta mostra lo stato del broker e la strategia di autenticazione utilizzata per proteggere il broker. In questo caso, la strategia di config_managed autenticazione indica che il broker utilizza il metodo di autenticazione del certificato SSL.

    { "AuthenticationStrategy": "config_managed", ..., "BrokerState": "RUNNING", ... }
  6. Verifica l'autenticazione del certificato SSL con il seguente ssl.sh script.

    Usa questo script bash per testare la connettività al tuo broker Amazon MQ for RabbitMQ. Questo script utilizza il certificato del client per l'autenticazione e verifica se la connessione è stata configurata correttamente. Se è configurato correttamente, vedrai il tuo broker pubblicare e consumare messaggi.

    Se ricevi un ACCESS_REFUSED errore, puoi risolvere i problemi delle impostazioni di configurazione utilizzando CloudWatch i log del tuo broker. Puoi trovare il link per il gruppo di CloudWatch log del tuo broker nella console Amazon MQ.

    In questo script, dovrai fornire i seguenti valori:

    • USERNAME: Il nome comune (CN) del certificato client.

    • CLIENT_KEYSTORE: percorso del file keystore del client (PKCS12 formato). Se hai utilizzato lo stack CDK prerequisito, il percorso predefinito è. $(pwd)/certs/client-keystore.p12

    • KEYSTORE_PASSWORD: Password per il keystore del cliente. Se hai utilizzato lo stack CDK prerequisito, la password predefinita è. changeit

    • BROKER_DNS: Puoi trovare questo valore in Connessioni nella pagina dei dettagli del broker della 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=<client_cert_common_name> CLIENT_KEYSTORE=$(pwd)/certs/client-keystore.p12 KEYSTORE_PASSWORD=changeit BROKER_DNS=<broker_dns> CONNECTION_STRING=amqps://${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} \ --sasl-external \ --use-default-ssl-context \ --flag persistent --rate $PRODUCER_RATE