Usando mTLS para AMQP e endpoints de gerenciamento - Amazon MQ

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Usando mTLS para AMQP e endpoints de gerenciamento

Este tutorial descreve como configurar o TLS mútuo (mTLS) para conexões de clientes AMQP e a interface de gerenciamento do RabbitMQ usando uma autoridade de certificação privada.

nota

O uso de autoridades de certificação privadas para mTLS está disponível somente para Amazon MQ para RabbitMQ versão 4 e superior.

Pré-requisitos para configurar o mTLS

Você pode configurar os AWS recursos necessários neste tutorial implantando a pilha AWS CDK para a integração do Amazon MQ para RabbitMQ mTLS com.

Essa pilha de CDK cria automaticamente todos os AWS recursos necessários, incluindo autoridade de certificação, certificados de cliente e funções do IAM. Consulte o pacote README para obter uma lista completa dos recursos criados pela pilha.

Se você estiver configurando os recursos manualmente em vez de usar a pilha CDK, certifique-se de ter a infraestrutura equivalente antes de configurar o mTLS em seus corretores Amazon MQ para RabbitMQ.

Pré-requisito para configurar o Amazon MQ

AWS Versão CLI >= 2.28.23 para tornar opcional a adição de um nome de usuário e senha durante a criação do broker.

Configurando mTLS no RabbitMQ usando CLI AWS

Esse procedimento usa a AWS CLI para criar e configurar os recursos necessários. No procedimento a seguir, certifique-se de substituir os valores do espaço reservado, como ConfigurationId e Revision, <c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca> e<2>, por seus valores reais.

  1. Crie uma nova configuração usando o comando create-configuration AWS CLI, conforme mostrado no exemplo a seguir.

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

    Esse comando retorna uma resposta semelhante ao exemplo a seguir.

    { "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. Crie um arquivo de configuração chamado rabbitmq.conf para configurar mTLS para AMQP e endpoints de gerenciamento, conforme mostrado no exemplo a seguir. Substitua todos os valores de espaço reservado no modelo (marcados com${...}) pelos valores reais das saídas de pilha de AWS CDK pré-requisitos implantadas ou da infraestrutura equivalente.

    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. Atualize a configuração usando o comando update-configuration AWS CLI, conforme mostrado no exemplo a seguir. Nesse comando, adicione o ID de configuração recebido na resposta da Etapa 1 do procedimento. Por exemplo, .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)"

    Esse comando retorna uma resposta semelhante ao exemplo a seguir.

    { "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. Crie um broker com a configuração mTLS que você criou na Etapa 2 deste procedimento. Para fazer isso, use o comando create-broker AWS CLI conforme mostrado no exemplo a seguir. Nesse comando, informe o ID de configuração e o número da revisão obtidos nas respostas das etapas 1 e 2, respectivamente. Por exemplo, c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca e 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"}]'

    Esse comando retorna uma resposta semelhante ao exemplo a seguir.

    { "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. Verifique se o status do broker muda de CREATION_IN_PROGRESS paraRUNNING, usando o comando describe-broker AWS CLI, conforme mostrado no exemplo a seguir. Neste comando, forneça a ID do agente que você obteve no resultado da etapa anterior. Por exemplo, .b-2a1b5133-a10c-49d2-879b-8c176c34cf73

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

    Esse comando retorna uma resposta semelhante ao exemplo a seguir. A resposta a seguir é uma versão abreviada da saída completa que o comando describe-broker retorna.

    { "AuthenticationStrategy": "simple", ..., "BrokerState": "RUNNING", ... }
  6. Verifique a autenticação mTLS com o mtls.sh script a seguir.

    Use esse script bash para testar a conectividade com o agente do Amazon MQ para RabbitMQ. Esse script usa seu certificado de cliente para autenticar e verificar se a conexão foi configurada corretamente. Se for configurado com sucesso, você verá seu corretor publicar e consumir mensagens.

    Se você receber um ACCESS_REFUSED erro, poderá solucionar seus problemas de configuração usando os CloudWatch registros do seu broker. Você pode encontrar o link para o grupo de CloudWatch registros do seu agente no console do Amazon MQ.

    Nesse script, é necessário fornecer os seguintes valores:

    • USERNAMEePASSWORD: As credenciais de usuário do RabbitMQ que você criou com o corretor.

    • CLIENT_KEYSTORE: caminho para o arquivo de armazenamento de chaves do seu cliente (PKCS12 formato). Se você usou a pilha CDK de pré-requisito, o caminho padrão é. $(pwd)/certs/client-keystore.p12

    • KEYSTORE_PASSWORD: Senha para o armazenamento de chaves do seu cliente. Se você usou a pilha CDK de pré-requisito, a senha padrão é. changeit

    • BROKER_DNS: Você pode encontrar esse valor em Conexões na página de detalhes do broker do console do 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