4.4.2.2. 一方向 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
管理者として 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.ks \ --from-literal=keyStorePassword=<password> \ --from-literal=trustStorePassword=<password>
注記シークレットを生成する際に、OpenShift ではキーストアとトラストストアの両方を指定する必要があります。トラストストアキーは、基本的に
client.ts
という名前です。ブローカーとクライアント間の一方向 TLS では、トラストストアは実際には必要ありません。ただし、シークレットを正常に生成するには、一部の有効なストアファイルをclient.ts
の値として指定する必要があります。前述の手順では、以前に生成されたブローカーキーストアファイルを再利用することで、client.ts
の dummy 値を指定します。これは、一方向 TLS に必要なすべての認証情報でシークレットを生成するには十分です。シークレットを 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 ...