AMQP および管理エンドポイントに mTLS を使用する - Amazon MQ

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AMQP および管理エンドポイントに mTLS を使用する

このチュートリアルでは、プライベート認証機関を使用して AMQP クライアント接続と RabbitMQ 管理インターフェイスの相互 TLS (mTLS) を設定する方法について説明します。

注記

mTLS のプライベート認証機関の使用は、Amazon MQ for RabbitMQ バージョン 4 以降でのみ使用できます。

mTLS を設定するための前提条件

このチュートリアルで必要な AWS リソースを設定するには、AWS Amazon MQ for RabbitMQ mTLS 統合用の CDK スタックを にデプロイします。

この CDK スタックは、認証機関、クライアント証明書、IAM ロールなど、必要なすべての AWS リソースを自動的に作成します。スタックによって作成されたリソースの完全なリストについては、パッケージ README を参照してください。

CDK スタックを使用する代わりにリソースを手動で設定する場合は、Amazon MQ for RabbitMQ ブローカーで mTLS を設定する前に、同等のインフラストラクチャが整っていることを確認してください。

Amazon MQ をセットアップするための前提条件

AWS CLI バージョン >= 2.28.23。ブローカーの作成時にユーザー名とパスワードをオプションで追加します。

CLI を使用した RabbitMQ での mTLS AWS の設定

この手順では、 CLI AWS を使用して必要なリソースを作成および設定します。次の手順では、configurationID や Revision、 <c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca> などのプレースホルダー値を実際の値に置き換え<2>てください。

  1. 次の例に示すように、create-configuration AWS CLI コマンドを使用して新しい設定を作成します。

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

    このコマンドでは、次の例のようなレスポンスが返されます。

    { "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. 次の例に示すように、 という設定ファイルを作成して、AMQP および管理エンドポイントの mTLS rabbitmq.confを設定します。テンプレート内のすべてのプレースホルダー値 ( でマーク) を${...}、デプロイされた AWS CDK 前提条件スタック出力または同等のインフラストラクチャの実際の値に置き換えます。

    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. 次の例に示すように、update-configuration AWS CLI コマンドを使用して設定を更新します。このコマンドでは、この手順のステップ 1 のレスポンスで受け取った設定 ID を追加します。例えば、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)"

    このコマンドでは、次の例のようなレスポンスが返されます。

    { "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. この手順のステップ 2 で作成した mTLS 設定を使用してブローカーを作成します。これを行うには、次の例に示すように create-broker AWS CLI コマンドを使用します。このコマンドでは、ステップ 1 と 2 のレスポンスで取得した設定 ID とリビジョン番号をそれぞれ指定します。例えば、c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca2 です。

    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"}]'

    このコマンドでは、次の例のようなレスポンスが返されます。

    { "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. 次の例に示すように describe-broker AWS CLI コマンドを使用してRUNNING、ブローカーのステータスが から CREATION_IN_PROGRESSに移行していることを確認します。このコマンドでは、前のステップの結果で取得したブローカー ID を指定します。例えば、b-2a1b5133-a10c-49d2-879b-8c176c34cf73

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

    このコマンドでは、次の例のようなレスポンスが返されます。次のレスポンスは、describe-broker コマンドが返す完全な出力の省略バージョンです。

    { "AuthenticationStrategy": "simple", ..., "BrokerState": "RUNNING", ... }
  6. 次のmtls.shスクリプトを使用して mTLS 認証を検証します。

    この bash スクリプトを使用して、Amazon MQ for RabbitMQ ブローカーへの接続をテストします。このスクリプトは、クライアント証明書を使用して認証し、接続が正しく設定されているかどうかを確認します。正常に設定されると、ブローカーがメッセージを発行して消費します。

    ACCESS_REFUSED エラーが発生した場合は、ブローカーの CloudWatch ログを使用して設定をトラブルシューティングできます。ブローカーの CloudWatch ロググループのリンクは、Amazon MQ コンソールにあります。

    このスクリプトでは、次の値を指定する必要があります。

    • USERNAME および PASSWORD: ブローカーで作成した RabbitMQ ユーザー認証情報。

    • CLIENT_KEYSTORE: クライアントキーストアファイルへのパス (PKCS12 形式)。前提条件の CDK スタックを使用した場合、デフォルトのパスは です$(pwd)/certs/client-keystore.p12

    • KEYSTORE_PASSWORD: クライアントキーストアのパスワード。前提条件の CDK スタックを使用した場合、デフォルトのパスワードは ですchangeit

    • BROKER_DNS: この値は、Amazon MQ コンソールのブローカーの詳細ページの Connections にあります。

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