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