在一個您必須使用現有第三方憑證的環境中,執行 Liberty,且這些憑證可能由提供信任的憑證管理中心簽署。
開始之前
- 建立含有憑證的 server.crt 檔,以及含有私密金鑰的 server.key 檔。
- 使用 openssl 指令和 Java keytool 指令,根據 server.crt 檔和 server.key 檔,建立 trust.jks 檔和 key.jks 檔。
請使用下列範例,來建立金鑰儲存庫和信任儲存庫 JKS 檔案:
- 以「公開金鑰密碼化標準 12 (PKCS12)」格式,匯出伺服器 CA 憑證和金鑰。
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 圖表時,請設定下列值:
- ssl.enabled=true
- 這個選項會告知 Helm 圖表,將使用安全通訊協定 HTTPS。
- ssl.useClusterSSLConfiguration=true
- 這個選項會告知 Helm 圖表,裝載所建立且用於金鑰儲存庫和信任儲存庫的憑證。
- ssl.createClusterSSLConfiguration=true
- 這個選項會告知 Helm,建立使用第三方憑證和密碼的 Liberty 配置。當設為 true 時,這個選項不會改寫您剛建立的憑證和密碼。
- service.port=secure_port_number
- 預設安全埠是 9443。
- service.targetPort=secure_port_number
- 預設安全埠是 9443。
- ingress.secureBackends=true
- 若有啟用「入口」,請使用這個選項,讓「入口」能夠與安全 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 圖表時,請設定下列值:
- ssl.enabled=true
- 這個選項會告知 Helm 圖表,將使用安全通訊協定 HTTPS。
- ssl.useClusterSSLConfiguration=true
- 這個選項會告知 Helm 圖表,裝載所建立且用於金鑰儲存庫和信任儲存庫的憑證。
- ssl.createClusterSSLConfiguration=false
- 這個選項會告知 Helm,不建立使用第三方憑證和密碼的 Liberty 配置。
- service.port=secure_port_number
- 預設安全埠是 9443。
- service.targetPort=secure_port_number
- 預設安全埠是 9443。
- ingress.secureBackends=true
- 若有啟用「入口」,請使用這個選項,讓「入口」能夠與安全 Liberty 應用程式通訊。