Verwendung der SSL-Zertifikatsauthentifizierung für Amazon MQ für RabbitMQ - Amazon MQ

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Verwendung der SSL-Zertifikatsauthentifizierung für Amazon MQ für RabbitMQ

In diesem Tutorial wird beschrieben, wie Sie die SSL-Zertifikatsauthentifizierung für Ihre Amazon MQ for RabbitMQ-Broker mithilfe einer privaten Zertifizierungsstelle konfigurieren.

Anmerkung

Das SSL-Zertifikat-Authentifizierungs-Plugin ist nur für Amazon MQ für RabbitMQ Version 4 und höher verfügbar.

Voraussetzungen für die Konfiguration der SSL-Zertifikatsauthentifizierung

Die SSL-Zertifikatsauthentifizierung verwendet Mutual TLS (mTLS), um Clients mit X.509-Zertifikaten zu authentifizieren. Sie können die in diesem Tutorial erforderlichen AWS Ressourcen einrichten, indem Sie den AWS CDK-Stack für Amazon MQ für die MTLS-Integration von RabbitMQ bereitstellen.

Dieser CDK-Stack erstellt automatisch alle erforderlichen AWS Ressourcen, einschließlich Zertifizierungsstelle, Client-Zertifikate und IAM-Rollen. Eine vollständige Liste der vom Stack erstellten Ressourcen finden Sie in der README-Datei des Pakets.

Anmerkung

Bevor Sie den CDK-Stack bereitstellen, legen Sie die RABBITMQ_TEST_USER_NAME Umgebungsvariable fest. Dieser Wert wird als Common Name (CN) im Client-Zertifikat verwendet und muss mit dem Benutzernamen übereinstimmen, den Sie in den Schritten der Anleitung verwenden. Beispiel: export RABBITMQ_TEST_USER_NAME="myuser"

Wenn Sie die Ressourcen manuell einrichten, anstatt den CDK-Stack zu verwenden, stellen Sie sicher, dass Sie über die entsprechende Infrastruktur verfügen, bevor Sie die SSL-Zertifikatsauthentifizierung auf Ihrem Amazon MQ für RabbitMQ-Broker konfigurieren.

Voraussetzung für die Einrichtung von Amazon MQ

AWS CLI-Version >= 2.28.23, um das Hinzufügen eines Benutzernamens und Kennworts bei der Brokererstellung optional zu machen.

Konfiguration der SSL-Zertifikatsauthentifizierung in RabbitMQ mit CLI AWS

Dieses Verfahren verwendet AWS CLI, um die erforderlichen Ressourcen zu erstellen und zu konfigurieren. Stellen Sie im folgenden Verfahren sicher, dass Sie die Platzhalterwerte, wie ConfigurationID und Revision, durch ihre <c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca> tatsächlichen <2> Werte ersetzen.

  1. Erstellen Sie mit dem create-configuration AWS CLI-Befehl eine neue Konfiguration, wie im folgenden Beispiel gezeigt.

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

    Dieser Befehl gibt eine Antwort zurück, die dem folgenden Beispiel ähnelt.

    { "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. Erstellen Sie eine Konfigurationsdateirabbitmq.conf, die aufgerufen wird, um die SSL-Zertifikatsauthentifizierung zu verwenden, wie im folgenden Beispiel gezeigt. Ersetzen Sie alle Platzhalterwerte in der Vorlage (gekennzeichnet mit${...}) durch tatsächliche Werte aus Ihren bereitgestellten Stack-Ausgaben für die AWS CDK erforderlichen Komponenten oder einer gleichwertigen Infrastruktur.

    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. Aktualisieren Sie die Konfiguration mit dem update-configuration AWS CLI-Befehl, wie im folgenden Beispiel gezeigt. Fügen Sie in diesem Befehl die Konfigurations-ID hinzu, die Sie als Antwort auf Schritt 1 dieses Verfahrens erhalten haben. Beispiel, 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)"

    Dieser Befehl gibt eine Antwort zurück, die dem folgenden Beispiel ähnelt.

    { "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. Erstellen Sie einen Broker mit der Konfiguration für die SSL-Zertifikatauthentifizierung, die Sie in Schritt 2 dieses Verfahrens erstellt haben. Verwenden Sie dazu den create-broker AWS CLI-Befehl, wie im folgenden Beispiel gezeigt. Geben Sie in diesem Befehl die Konfigurations-ID und die Revisionsnummer an, die Sie in den Antworten von Schritt 1 bzw. 2 erhalten haben. Beispiel: c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca und 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"}]'

    Dieser Befehl gibt eine Antwort zurück, die dem folgenden Beispiel ähnelt.

    { "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. Stellen Sie sicher, dass der Status des Brokers von CREATION_IN_PROGRESS zu wechseltRUNNING, indem Sie den describe-broker AWS CLI-Befehl verwenden, wie im folgenden Beispiel gezeigt. Geben Sie in diesem Befehl die Broker-ID ein, die Sie im Ergebnis des vorherigen Schritts erhalten haben. Beispiel, b-2a1b5133-a10c-49d2-879b-8c176c34cf73.

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

    Dieser Befehl gibt eine Antwort zurück, die dem folgenden Beispiel ähnelt. Die folgende Antwort ist eine abgekürzte Version der vollständigen Ausgabe, die der describe-broker Befehl zurückgibt. Diese Antwort zeigt den Brokerstatus und die Authentifizierungsstrategie, die zur Sicherung des Brokers verwendet wurden. In diesem Fall weist die config_managed Authentifizierungsstrategie darauf hin, dass der Broker die SSL-Zertifikatsauthentifizierungsmethode verwendet.

    { "AuthenticationStrategy": "config_managed", ..., "BrokerState": "RUNNING", ... }
  6. Überprüfen Sie die SSL-Zertifikatsauthentifizierung mit dem folgenden ssl.sh Skript.

    Verwenden Sie dieses Bash-Skript, um die Konnektivität zu Ihrem Amazon MQ for RabbitMQ Broker zu testen. Dieses Skript verwendet Ihr Client-Zertifikat zur Authentifizierung und überprüft, ob die Verbindung ordnungsgemäß konfiguriert wurde. Wenn es erfolgreich konfiguriert wurde, werden Sie sehen, wie Ihr Broker Nachrichten veröffentlicht und verarbeitet.

    Wenn Sie eine ACCESS_REFUSED Fehlermeldung erhalten, können Sie mithilfe der CloudWatch Protokolle Ihres Brokers Fehler in Ihren Konfigurationseinstellungen beheben. Sie finden den Link für die CloudWatch Protokollgruppe für Ihren Broker in der Amazon MQ MQ-Konsole.

    In diesem Skript müssen Sie die folgenden Werte angeben:

    • USERNAME: Der allgemeine Name (CN) aus Ihrem Client-Zertifikat.

    • CLIENT_KEYSTORE: Pfad zu Ihrer Client-Keystore-Datei (PKCS12 Format). Wenn Sie den erforderlichen CDK-Stack verwendet haben, lautet der Standardpfad. $(pwd)/certs/client-keystore.p12

    • KEYSTORE_PASSWORD: Passwort für Ihren Client-Keystore. Wenn Sie den vorausgesetzten CDK-Stack verwendet haben, lautet das Standardkennwort. changeit

    • BROKER_DNS: Sie finden diesen Wert unter Verbindungen auf der Seite mit den Broker-Details der Amazon MQ MQ-Konsole.

    #! /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