Uso de la autenticación con certificado SSL para Amazon MQ para RabbitMQ - 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 la autenticación con certificado SSL para Amazon MQ para RabbitMQ

En este tutorial se describe cómo configurar la autenticación con certificado SSL para sus corredores de Amazon MQ for RabbitMQ mediante una autoridad de certificación privada.

nota

El complemento de autenticación con certificado SSL solo está disponible para Amazon MQ para RabbitMQ versión 4 y versiones posteriores.

Requisitos previos para configurar la autenticación con certificado SSL

La autenticación con certificados SSL utiliza el TLS mutuo (mTLS) para autenticar a los clientes mediante certificados X.509. Puede configurar AWS los recursos necesarios en este tutorial mediante la implementación de la pila de AWS CDK para la integración de mTLS de Amazon MQ para RabbitMQ.

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

nota

Antes de implementar la pila de CDK, defina la variable de RABBITMQ_TEST_USER_NAME entorno. Este valor se utilizará como nombre común (CN) en el certificado del cliente y debe coincidir con el nombre de usuario que utilice en los pasos del tutorial. Por ejemplo: export RABBITMQ_TEST_USER_NAME="myuser"

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 la autenticación con certificado SSL en su Amazon MQ para agentes 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 la autenticación con certificado SSL 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-ssl-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-ssl-config on RabbitMQ 4.2", "Revision": 1 }, "Name": "rabbitmq-ssl-config" }
  2. Cree un archivo de configuración denominado rabbitmq.conf para utilizar la autenticación con certificado SSL, 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_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. 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-ssl-config", "Warnings": [] }
  4. Cree un agente con la configuración de autenticación del certificado SSL 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-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"}]'

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

    { "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. 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. Esta respuesta muestra el estado del agente y la estrategia de autenticación utilizada para proteger al agente. En este caso, la estrategia de config_managed autenticación indica que el agente utiliza el método de autenticación con certificado SSL.

    { "AuthenticationStrategy": "config_managed", ..., "BrokerState": "RUNNING", ... }
  6. Verifique la autenticación del certificado SSL con el siguiente ssl.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 la autenticación y verifica 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:

    • USERNAME: El nombre común (CN) de su certificado de cliente.

    • CLIENT_KEYSTORE: Ruta al archivo del almacén de claves del cliente (PKCS12 formato). 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=<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