Uso de mTLS para AMQP y puntos finales de administración - Amazon MQ

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Uso de mTLS para AMQP y puntos finales de administración

Este tutorial describe cómo configurar el TLS mutuo (mTLS) para las conexiones de los clientes AMQP y la interfaz de administración de RabbitMQ mediante una autoridad de certificación privada.

nota

El uso de autoridades de certificación privadas para los mTL solo está disponible para Amazon MQ para RabbitMQ versión 4 y versiones posteriores.

Requisitos previos para configurar los mTLS

Puede configurar AWS los recursos necesarios en este tutorial implementando la pila de AWS CDK para la integración de Amazon MQ para RabbitMQ mTLS con.

Esta pila de CDK crea automáticamente todos los AWS recursos necesarios, incluidos la autoridad de certificación, los certificados de los clientes y las funciones de IAM. Consulte el paquete README para obtener una lista completa de los recursos creados por la pila.

Si va a configurar los recursos manualmente en lugar de utilizar la pila de CDK, asegúrese de disponer de la infraestructura equivalente antes de configurar mTLS en su Amazon MQ para corredores de RabbitMQ.

Requisito previo para configurar Amazon MQ

AWS Versión CLI >= 2.28.23 para que la adición de un nombre de usuario y una contraseña sea opcional durante la creación del corredor.

Configuración de mTLS en RabbitMQ mediante CLI AWS

Este procedimiento utiliza la AWS CLI para crear y configurar los recursos necesarios. En el siguiente procedimiento, asegúrese de reemplazar los valores de los marcadores de posición, como el ID de configuración y la revisión, <c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca> por sus valores <2> reales.

  1. Cree una nueva configuración mediante el comando create-configuration AWS CLI, como se muestra en el siguiente ejemplo.

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

    Este comando devuelve una respuesta de JSON similar a la siguiente.

    { "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. Cree un archivo de configuración denominado rabbitmq.conf para configurar los mTLs para el AMQP y los puntos finales de administración, como se muestra en el siguiente ejemplo. Sustituya todos los valores de marcador de posición de la plantilla (marcados con${...}) por valores reales de las salidas de la pila de AWS CDK requisitos previos implementada o de una infraestructura 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. Actualice la configuración mediante el comando update-configuration AWS CLI, como se muestra en el siguiente ejemplo. En este comando, añada el identificador de configuración que recibió en la respuesta al paso 1 de este procedimiento. Por ejemplo, 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)"

    Este comando devuelve una respuesta de JSON similar a la siguiente.

    { "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. Cree un corredor con la configuración mTLS que creó en el paso 2 de este procedimiento. Para ello, utilice el comando create-broker AWS CLI tal y como se muestra en el siguiente ejemplo. En este comando, indique el identificador de configuración y el número de revisión que obtuvo en las respuestas de los pasos 1 y 2, respectivamente. Por ejemplo, c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca y 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"}]'

    Este comando devuelve una respuesta de JSON similar a la siguiente.

    { "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. Compruebe que el estado del bróker pasa de CREATION_IN_PROGRESS aRUNNING, mediante el comando describe-broker AWS CLI, como se muestra en el siguiente ejemplo. En este comando, proporcione el ID de corredor que obtuvo en el resultado del paso anterior. Por ejemplo, b-2a1b5133-a10c-49d2-879b-8c176c34cf73.

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

    Este comando devuelve una respuesta de JSON similar a la siguiente. La siguiente respuesta es una versión abreviada del resultado completo que devuelve el comando describe-broker.

    { "AuthenticationStrategy": "simple", ..., "BrokerState": "RUNNING", ... }
  6. Verifique la autenticación de mTLS con el siguiente mtls.sh script.

    Utilice este script de bash para probar la conectividad con su agente de Amazon MQ para RabbitMQ. Este script usa su certificado de cliente para autenticarse y verificar si la conexión se configuró correctamente. Si se ha configurado correctamente, verá que su agente publica y consume mensajes.

    Si recibe un ACCESS_REFUSED error, puede solucionar los problemas de configuración utilizando los CloudWatch registros de su agente. Encontrará el enlace al grupo de CloudWatch registros de su agente en la consola de Amazon MQ.

    En este script, deberá proporcionar los siguientes valores:

    • USERNAMEyPASSWORD: las credenciales de usuario de RabbitMQ que creó con el bróker.

    • CLIENT_KEYSTORE: Ruta al archivo del almacén de claves de su cliente (formato). PKCS12 Si ha utilizado la pila de CDK necesaria, la ruta por defecto es. $(pwd)/certs/client-keystore.p12

    • KEYSTORE_PASSWORD: contraseña para el almacén de claves de su cliente. Si ha utilizado la pila de CDK necesaria, la contraseña predeterminada es. changeit

    • BROKER_DNS: Puedes encontrar este valor en Conexiones, en la página de detalles del bróker de la consola 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