4.4.2.3. 双方向 TLS の設定
本セクションの手順では、broker-client 接続のセキュリティーを保護するために双方向トランスポート層セキュリティー (TLS) を設定する方法を説明します。
双方向 TLS では、ブローカーとクライアントの両方が証明書を表示します。ブローカーおよびクライアントはこれらの証明書を使用して相互認証と呼ばれることもあります。
前提条件
- クライアントがホスト名の検証を使用する場合のブローカー証明書の生成の要件を理解する必要があります。詳細は、「ホスト名検証用のブローカー証明書の設定」 を参照してください。
手順
ブローカーキーストアの自己署名証明書を生成します。
$ keytool -genkey -alias broker -keyalg RSA -keystore ~/broker.ks
ブローカーキーストアから証明書をエクスポートし、クライアントと共有できるようにします。Base64 エンコードの
.pem
形式の証明書をエクスポートします。以下に例を示します。$ keytool -export -alias broker -keystore ~/broker.ks -file ~/broker_cert.pem
クライアントで、ブローカー証明書をインポートするクライアントトラストストアを作成します。
$ keytool -import -alias broker -keystore ~/client.ts -file ~/broker_cert.pem
クライアントで、クライアントキーストアの自己署名証明書を生成します。
$ keytool -genkey -alias broker -keyalg RSA -keystore ~/client.ks
クライアントで、クライアントキーストアから証明書をエクスポートし、ブローカーと共有できるようにします。Base64 エンコードの
.pem
形式の証明書をエクスポートします。以下に例を示します。$ keytool -export -alias broker -keystore ~/client.ks -file ~/client_cert.pem
クライアント証明書をインポートするブローカートラストストアを作成します。
$ keytool -import -alias broker -keystore ~/broker.ts -file ~/client_cert.pem
管理者として OpenShift Container Platform にログインします。以下に例を示します。
$ oc login -u system:admin
ブローカーのデプロイメントが含まれるプロジェクトに切り替えます。以下に例を示します。
$ oc project my-openshift-project
TLS 認証情報を保存するためのシークレットを作成します。以下に例を示します。
$ oc create secret generic my-tls-secret \ --from-file=broker.ks=~/broker.ks \ --from-file=client.ts=~/broker.ts \ --from-literal=keyStorePassword=<password> \ --from-literal=trustStorePassword=<password>
注記シークレットを生成する際に、OpenShift ではキーストアとトラストストアの両方を指定する必要があります。トラストストアキーは、基本的に
client.ts
という名前です。ブローカーとクライアント間の双方向 TLS の場合は、クライアント証明書を保持するため、ブローカートラストストアを含むシークレットを生成する必要があります。そのため、前の手順では、client.ts キーに指定した値は実際にブローカー
のトラストストアファイルになります。シークレットを Operator のインストール時に作成したサービスアカウントにリンクします。以下に例を示します。
$ oc secrets link sa/amq-broker-operator secret/my-tls-secret
セキュアなアクセプターまたはコネクターの
sslSecret
パラメーターにシークレット名を指定します。以下に例を示します。spec: ... acceptors: - name: my-acceptor protocols: amqp,openwire port: 5672 sslEnabled: true sslSecret: my-tls-secret expose: true connectionsAllowed: 5 ...