

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 a autenticação de certificado SSL para Amazon MQ para RabbitMQ
<a name="rabbitmq-ssl-tutorial"></a>

Este tutorial descreve como configurar a autenticação de certificado SSL para seus corretores Amazon MQ para RabbitMQ usando uma autoridade de certificação privada.

**nota**  
O plug-in de autenticação de certificado SSL está disponível somente para o Amazon MQ for RabbitMQ versão 4 e superior.

**Topics**
+ [Pré-requisitos para configurar a autenticação do certificado SSL](#rabbitmq-ssl-tutorial-prerequisites)
+ [Configurando a autenticação de certificado SSL no RabbitMQ usando CLI AWS](#rabbitmq-ssl-tutorial-configure-cli)

## Pré-requisitos para configurar a autenticação do certificado SSL
<a name="rabbitmq-ssl-tutorial-prerequisites"></a>

A autenticação de certificado SSL usa TLS mútuo (mTLS) para autenticar clientes usando certificados X.509. Você pode configurar os AWS recursos necessários neste tutorial implantando a [pilha de AWS CDK para a integração entre Amazon MQ e RabbitMQ mTLS](https://github.com/aws-samples/amazon-mq-samples/blob/main/rabbitmq-samples/rabbitmq-mtls-sample/).

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.

**nota**  
Antes de implantar a pilha CDK, defina a `RABBITMQ_TEST_USER_NAME` variável de ambiente. Esse valor será usado como o Nome Comum (CN) no certificado do cliente e deve corresponder ao nome de usuário usado nas etapas do tutorial. Por exemplo: `export RABBITMQ_TEST_USER_NAME="myuser"`

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

### Pré-requisito para configurar o Amazon MQ
<a name="rabbitmq-ssl-tutorial-prerequisite-cli"></a>

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 a autenticação de certificado SSL no RabbitMQ usando CLI AWS
<a name="rabbitmq-ssl-tutorial-configure-cli"></a>

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-ssl-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-ssl-config on RabbitMQ 4.2",
           "Revision": 1
       },
       "Name": "rabbitmq-ssl-config"
   }
   ```

1. Crie um arquivo de configuração chamado `rabbitmq.conf` para usar a autenticação de certificado SSL, 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_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}
   ```

1. 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-ssl-config",
       "Warnings": []
   }
   ```

1. Crie um broker com a configuração de autenticação do certificado SSL 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-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"}]'
   ```

   Esse comando retorna uma resposta semelhante ao exemplo a seguir.

   ```
   {
       "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"
   }
   ```

1. Verifique se o status do broker muda de `CREATION_IN_PROGRESS` para`RUNNING`, 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. Essa resposta mostra o status do agente e a estratégia de autenticação usada para proteger o agente. Nesse caso, a estratégia de `config_managed` autenticação indica que o agente usa o método de autenticação de certificado SSL.

   ```
   {
       "AuthenticationStrategy": "config_managed",
       ...,
       "BrokerState": "RUNNING",
       ...
   }
   ```

1. Verifique a autenticação do certificado SSL com o `ssl.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 autenticação e verifica 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 corretor. 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:
   + `USERNAME`: O nome comum (CN) do seu certificado de cliente.
   + `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=<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
   ```