7.2. 暗号化の設定
Red Hat OpenShift サービス証明書またはカスタム TLS 証明書で、クライアントと Data Grid ノードとの間の接続を暗号化します。
7.2.1. Red Hat OpenShift サービス証明書を使用した暗号化
Data Grid Operator は、Red Hat OpenShift サービス CA によって署名された TLS 証明書を自動的に生成します。次に、Data Grid Operator は証明書およびキーをシークレットに格納し、それらを取得してリモートクライアントで使用できるようにします。
Red Hat OpenShift サービス CA が利用可能な場合、Data Grid Operator は以下の spec.security.endpointEncryption
設定を Infinispan
CR に追加します。
spec: ... security: endpointEncryption: type: Service certServiceName: service.beta.openshift.io 1 certSecretName: example-infinispan-cert-secret 2
サービス証明書は、Data Grid クラスターの内部 DNS 名を共通名 (CN) として使用します。以下に例を示します。
Subject: CN = example-infinispan.mynamespace.svc
このため、サービス証明書は OpenShift 内でのみ全面的に信頼することができます。OpenShift の外部で実行しているクライアントとの接続を暗号化する場合は、カスタム TLS 証明書を使用する必要があります。
サービス証明書は 1 年間有効で、有効期限が切れる前に自動的に置き換えられます。
7.2.2. Retrieving TLS Certificates
暗号化シークレットから TLS 証明書を取得して、クライアントトラストストアを作成します。
-
以下のように、暗号化シークレットから
tls.crt
を取得します。
$ oc get secret example-infinispan-cert-secret \ -o jsonpath='{.data.tls\.crt}' | base64 --decode > tls.crt
7.2.3. 暗号化の無効化
クライアントが Data Grid との接続を確立するために TLS 証明書を必要としないように、暗号化を無効化することができます。
Data Grid では、エンドポイントが spec.expose.type
を介して OpenShift クラスターの外部に公開されている実稼働環境で暗号化を無効にすることは推奨しません。
手順
Infinispan
CR のspec.security.endpointEncryption.type
フィールドの値としてNone
を設定し、変更を適用します。spec: ... security: endpointEncryption: type: None 1
- 1
- Data Grid エンドポイントの暗号化を無効にします。
7.2.4. カスタム TLS 証明書の使用
カスタムの PKCS12 キーストアまたは TLS 証明書/キーのペアを使用して、クライアントと Data Grid クラスターとの間の接続を暗号化します。
前提条件
- キーストアまたは証明書シークレットを作成します。参照:
- 証明書シークレット
- キーストアシークレット
手順
暗号化シークレットを OpenShift namespace に追加します。以下に例を示します。
$ oc apply -f tls_secret.yaml
Infinispan
CR のspec.security.endpointEncryption
で暗号化シークレットを指定し、変更を適用します。spec: ... security: endpointEncryption: 1 type: Secret 2 certSecretName: tls-secret 3
7.2.4.1. 証明書シークレット
apiVersion: v1 kind: Secret metadata: name: tls-secret type: Opaque data: tls.key: "LS0tLS1CRUdJTiBQUk ..." 1 tls.crt: "LS0tLS1CRUdJTiBDRVl ..." 2
7.2.4.2. キーストアシークレット
apiVersion: v1 kind: Secret metadata: name: tls-secret type: Opaque stringData: alias: server 1 password: password 2 data: keystore.p12: "MIIKDgIBAzCCCdQGCSqGSIb3DQEHA..." 3