

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Menggunakan otentikasi sertifikat SSL untuk Amazon MQ untuk RabbitMQ
<a name="rabbitmq-ssl-tutorial"></a>

Tutorial ini menjelaskan cara mengonfigurasi otentikasi sertifikat SSL untuk Amazon MQ Anda untuk broker RabbitMQ menggunakan otoritas sertifikat pribadi.

**catatan**  
Plugin otentikasi sertifikat SSL hanya tersedia untuk Amazon MQ untuk RabbitMQ versi 4 ke atas.

**Topics**
+ [Prasyarat untuk mengonfigurasi otentikasi sertifikat SSL](#rabbitmq-ssl-tutorial-prerequisites)
+ [Mengkonfigurasi otentikasi sertifikat SSL di RabbitMQ menggunakan CLI AWS](#rabbitmq-ssl-tutorial-configure-cli)

## Prasyarat untuk mengonfigurasi otentikasi sertifikat SSL
<a name="rabbitmq-ssl-tutorial-prerequisites"></a>

Otentikasi sertifikat SSL menggunakan TLS bersama (mTLS) untuk mengautentikasi klien menggunakan sertifikat X.509. Anda dapat mengatur AWS sumber daya yang diperlukan dalam tutorial ini dengan menerapkan [tumpukan AWS CDK untuk Amazon MQ untuk integrasi MTLS RabbitMQ](https://github.com/aws-samples/amazon-mq-samples/blob/main/rabbitmq-samples/rabbitmq-mtls-sample/).

Tumpukan CDK ini secara otomatis membuat semua AWS sumber daya yang diperlukan termasuk otoritas sertifikat, sertifikat klien, dan peran IAM. Lihat paket README untuk daftar lengkap sumber daya yang dibuat oleh tumpukan.

**catatan**  
Sebelum menerapkan tumpukan CDK, atur variabel `RABBITMQ_TEST_USER_NAME` lingkungan. Nilai ini akan digunakan sebagai Nama Umum (CN) dalam sertifikat klien dan harus sesuai dengan nama pengguna yang Anda gunakan dalam langkah-langkah tutorial. Misalnya: `export RABBITMQ_TEST_USER_NAME="myuser"`

Jika Anda menyiapkan sumber daya secara manual alih-alih menggunakan tumpukan CDK, pastikan Anda memiliki infrastruktur yang setara sebelum mengonfigurasi otentikasi sertifikat SSL di Amazon MQ Anda untuk broker RabbitMQ.

### Prasyarat untuk mengatur Amazon MQ
<a name="rabbitmq-ssl-tutorial-prerequisite-cli"></a>

AWS Versi CLI >= 2.28.23 untuk membuat penambahan nama pengguna dan kata sandi opsional selama pembuatan broker.

## Mengkonfigurasi otentikasi sertifikat SSL di RabbitMQ menggunakan CLI AWS
<a name="rabbitmq-ssl-tutorial-configure-cli"></a>

Prosedur ini menggunakan AWS CLI untuk membuat dan mengkonfigurasi sumber daya yang diperlukan. Dalam prosedur berikut, pastikan untuk mengganti nilai placeholder, seperti ConfigurationId dan Revision, `<c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca>` dan`<2>`, dengan nilai sebenarnya.

1. Buat konfigurasi baru menggunakan perintah `create-configuration` AWS CLI seperti yang ditunjukkan pada contoh berikut.

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

   Perintah ini mengembalikan respon mirip dengan contoh berikut.

   ```
   {
       "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. Buat file konfigurasi yang dipanggil `rabbitmq.conf` untuk menggunakan otentikasi sertifikat SSL, seperti yang ditunjukkan pada contoh berikut. Ganti semua nilai placeholder dalam template (ditandai dengan`${...}`) dengan nilai aktual dari output tumpukan AWS CDK prasyarat yang diterapkan atau infrastruktur yang setara.

   ```
   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. Perbarui konfigurasi menggunakan perintah `update-configuration` AWS CLI seperti yang ditunjukkan pada contoh berikut. Dalam perintah ini, tambahkan ID konfigurasi yang Anda terima sebagai respons Langkah 1 dari prosedur ini. Misalnya, `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)"
   ```

   Perintah ini mengembalikan respon mirip dengan contoh berikut.

   ```
   {
       "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. Buat broker dengan konfigurasi otentikasi sertifikat SSL yang Anda buat di Langkah 2 prosedur ini. Untuk melakukan ini, gunakan perintah `create-broker` AWS CLI seperti yang ditunjukkan pada contoh berikut. Dalam perintah ini, berikan ID konfigurasi dan nomor revisi yang Anda peroleh dalam tanggapan Langkah 1 dan 2 masing-masing. Misalnya, `c-fa3390a5-7e01-4559-ae0c-eb15b38b22ca` dan `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"}]'
   ```

   Perintah ini mengembalikan respon mirip dengan contoh berikut.

   ```
   {
       "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. Verifikasi bahwa status broker bertransisi dari `CREATION_IN_PROGRESS` ke`RUNNING`, menggunakan perintah `describe-broker` AWS CLI seperti yang ditunjukkan pada contoh berikut. Dalam perintah ini, berikan ID broker yang Anda peroleh pada hasil langkah sebelumnya. Misalnya, `b-2a1b5133-a10c-49d2-879b-8c176c34cf73`.

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

   Perintah ini mengembalikan respon mirip dengan contoh berikut. Respons berikut adalah versi singkat dari output lengkap yang dikembalikan `describe-broker` perintah. Tanggapan ini menunjukkan status broker dan strategi otentikasi yang digunakan untuk mengamankan broker. Dalam hal ini, strategi `config_managed` otentikasi menunjukkan bahwa broker menggunakan metode otentikasi sertifikat SSL.

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

1. Verifikasi otentikasi sertifikat SSL dengan skrip berikut`ssl.sh`.

   Gunakan skrip bash ini untuk menguji konektivitas ke Amazon MQ Anda untuk broker RabbitMQ. Skrip ini menggunakan sertifikat klien Anda untuk otentikasi dan memverifikasi apakah koneksi telah dikonfigurasi dengan benar. Jika berhasil dikonfigurasi, Anda akan melihat broker Anda mempublikasikan dan menggunakan pesan.

   Jika Anda menerima `ACCESS_REFUSED` kesalahan, Anda dapat memecahkan masalah pengaturan konfigurasi Anda dengan menggunakan CloudWatch log untuk broker Anda. Anda dapat menemukan tautan untuk grup CloudWatch log untuk broker Anda di konsol Amazon MQ.

   Dalam skrip ini, Anda harus memberikan nilai-nilai berikut:
   + `USERNAME`Nama umum (CN) dari sertifikat klien Anda.
   + `CLIENT_KEYSTORE`: Jalur ke file keystore klien Anda (PKCS12 format). Jika Anda menggunakan tumpukan CDK prasyarat, jalur defaultnya adalah. `$(pwd)/certs/client-keystore.p12`
   + `KEYSTORE_PASSWORD`: Kata sandi untuk keystore klien Anda. Jika Anda menggunakan tumpukan CDK prasyarat, kata sandi defaultnya adalah. `changeit`
   + `BROKER_DNS`: Anda dapat menemukan nilai ini di bawah **Koneksi** di halaman detail broker konsol 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
   ```