信頼を提供する認証局によって署名されている可能性のある既存のサード・パーティー証明書を使用する必要がある環境で Liberty を実行します。
始める前に
- 証明書を含む server.crt ファイルと、秘密鍵を含む server.key ファイルを作成します。
- openssl コマンドおよび Java keytool コマンドを使用して、server.crt ファイルおよび server.key ファイルに基づく trust.jks ファイルおよび key.jks ファイルを作成します。
以下の例を、鍵ストアおよびトラストストアの JKS ファイルを作成するために使用できます。
- サーバー CA 証明書および鍵を Public Key Cryptography Standards 12 (PKCS12) 形式でエクスポートします。
openssl pkcs12 -export -in server.crt -inkey server.key -out key.p12 -name default -passout pass:mypassword
- サーバー PKCS12 ファイルを鍵ストア key.jks ファイルにインポートします。
keytool -importkeystore -deststorepass mypassword -destkeypass mypassword -destkeystore key.jks -srckeystore key.p12 -srcstoretype PKCS12 -srcstorepass mypassword -alias default
- サーバー CA 証明書を鍵ストア trust.jks ファイルにインポートします。
keytool -importcert -keystore trust.jks -storepass mypassword -file server.crt -alias default -noprompt
- SSL 構成が既に作成済みかどうかを判別します。そのためには、以下のコマンドを実行して、秘密が存在するかどうかを確認します。
kubectl get secrets
SSL 構成が存在する場合、以下の秘密が表示されます。
mb-keystore, mb-keystore-password, mb-truststore, mb-truststore-password
手順
- SSL 構成が作成されていない場合、サード・パーティー証明書を使用して自動的に SSL を使用可能にするため、以下のステップを実行します。
- 以下の Kubernetes 秘密鍵を作成します。この例では、Liberty
securityUtility encode コマンドを使用して、鍵ストアおよびトラストストアのパスワードを XOR 暗号化でエンコードしています。
kubectl create secret generic mb-keystore --from-file=./key.jks
kubectl create secret generic mb-truststore --from-file=./trust.jks
kubectl create secret generic mb-keystore-password --from-literal=password="{xor}Ej4xPjg6MjoxKw =="
kubectl create secret generic mb-truststore-password --from-literal=password="{xor}Ej4xPjg6MjoxKw=="
- Liberty Helm chart をデプロイするときに、以下の値を設定します。
- ssl.enabled=true
- このオプションは、セキュア・プロトコル HTTPS が使用されることを Helm chart に知らせます。
- ssl.useClusterSSLConfiguration=true
- このオプションは、作成済みの証明書をマウントするように Helm chart に指示します。この証明書は、鍵ストアおよびトラストストアに使用されます。
- ssl.createClusterSSLConfiguration=true
- このオプションは、サード・パーティー証明書およびパスワード秘密を使用する Liberty 構成を作成するように Helm に指示します。true に設定されていると、このオプションは、作成されたばかりの証明書および秘密を上書きしません。
- service.port=secure_port_number
- デフォルトのセキュア・ポートは 9443 です。
- service.targetPort=secure_port_number
- デフォルトのセキュア・ポートは 9443 です。
- ingress.secureBackends=true
- Ingress が使用可能になっている場合、このオプションを使用すると、Ingress はセキュア Liberty アプリケーションと通信できます。
- SSL 構成が既に作成されている場合、自動的に SSL を使用可能にするため、以下のステップを実行します。
- 以前に作成された秘密を削除します。
kubectl delete secrets mb-keystore mb-keystore-password mb-truststore mb-truststore-password
- 以下の Kubernetes 秘密鍵を作成します。
kubectl create secret generic mb-keystore --from-file=./key.jks
kubectl create secret generic mb-truststore --from-file=./trust.jks
kubectl create secret generic mb-keystore-password --from-literal=password="{xor}Ej4xPjg6MjoxKw=="
kubectl create secret generic mb-truststore-password --from-literal=password="{xor}Ej4xPjg6MjoxKw=="
- Liberty Helm chart をデプロイするときに、以下の値を設定します。
- ssl.enabled=true
- このオプションは、セキュア・プロトコル HTTPS が使用されることを Helm chart に知らせます。
- ssl.useClusterSSLConfiguration=true
- このオプションは、作成済みの証明書をマウントするように Helm chart に指示します。この証明書は、鍵ストアおよびトラストストアに使用されます。
- ssl.createClusterSSLConfiguration=false
- このオプションは、サード・パーティー証明書およびパスワード秘密を使用する Liberty 構成を作成しないように Helm に指示します。
- service.port=secure_port_number
- デフォルトのセキュア・ポートは 9443 です。
- service.targetPort=secure_port_number
- デフォルトのセキュア・ポートは 9443 です。
- ingress.secureBackends=true
- Ingress が使用可能になっている場合、このオプションを使用すると、Ingress はセキュア Liberty アプリケーションと通信できます。