Führen Sie Liberty in einer Umgebung aus, in der Sie vorhandene Zertifikate anderer Anbieter verwenden müssen, die von einer Zertifizierungsstelle signiert sein können, die eine Vertrauensbeziehung herstellt.
Vorbereitende Schritte
- Erstellen Sie eine Datei server.crt, die das Zertifikat enthält, und eine Datei server.key mit dem privaten Schlüssel.
- Verwenden Sie den Befehl openssl und den Java-Befehl keytool, um die Dateien trust.jks und key.jks basierend auf den Dateien server.crt und server.key zu erstellen.
Verwenden Sie das folgende Beispiel, um die JKS-Keystore- und -Truststore-Dateien zu erstellen:
- Exportieren Sie das Server-CA-Zertifikat und den Serverschlüssel im PKCS12-Format (Public Key Cryptography Standards).
openssl pkcs12 -export -in server.crt -inkey server.key -out key.p12 -name default -passout pass:mypassword
- Importieren Sie die PKCS12-Serverdatei in den Keystore key.jks.
keytool -importkeystore -deststorepass mypassword -destkeypass mypassword -destkeystore key.jks -srckeystore key.p12 -srcstoretype PKCS12 -srcstorepass mypassword -alias default
- Importieren Sie das Server-CA-Zertifikat in den Keystore trust.jks.
keytool -importcert -keystore trust.jks -storepass mypassword -file server.crt -alias default -noprompt
- Ermitteln Sie, ob die SSL-Konfiguration bereits erstellt wurde. Überprüfen Sie mit dem folgenden Befehl, ob die geheimen Schlüssel bereits vorhanden sind:
kubectl get secrets
Wenn die SSL-Konfiguration vorhanden ist, werden die folgenden geheimen Schlüssel angezeigt:
mb-keystore, mb-keystore-password, mb-truststore, mb-truststore-password
Vorgehensweise
- Wenn die SSL-Konfiguration noch nicht erstellt wurde, führen Sie die folgenden Schritte aus, um SSL automatisch mit Zertifikaten anderer Anbieter zu aktivieren:
- Erstellen Sie die folgenden geheimen Kubernetes-Schlüssel. Dieses Beispiel verwendet den Liberty-Befehl securityUtility encode, um die Keystore- und Truststore-Kennwörter mit XOR-Verschlüsselung zu codieren.
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=="
- Legen Sie die folgenden Werte fest, wenn Sie das Liberty-Helmdiagramm implementieren:
- ssl.enabled=true
- Mit dieser Option wird das Helmdiagramm über die Verwendung des sicheren Protokolls (HTTPS) informiert.
- ssl.useClusterSSLConfiguration=true
- Mit dieser Option wird das Helmdiagramm angewiesen, das erstellte Zertifikat zu mounten, das für den Keystore und den Truststore verwendet wird.
- ssl.createClusterSSLConfiguration=true
- Mit dieser Option wird Helm angewiesen, die Liberty-Konfiguration zu erstellen, die die Zertifikate und geheimen Schlüssel anderer Anbieter verwendet. Wenn der Wert für diese Option auf true gesetzt ist, überschreibt diese Option nicht die von Ihnen soeben erstellten Zertifikate und geheimen Schlüssel.
- service.port=Nummer_des_sicheren_Ports
- Der sichere Standardport ist 9443.
- service.targetPort=Nummer_des_sicheren_Ports
- Der sichere Standardport ist 9443.
- ingress.secureBackends=true
- Wenn Ingress aktiviert ist, verwenden Sie diese Option, sodass Ingress mit der gesicherten Liberty-Anwendung kommunizieren kann.
- Wenn die SSL-Konfiguration bereits erstellt wurde, führen Sie die folgenden Schritte aus, um SSL automatisch zu aktivieren:
- Löschen Sie die zuvor erstellten geheimen Schlüssel.
kubectl delete secrets mb-keystore mb-keystore-password mb-truststore mb-truststore-password
- Erstellen Sie die folgenden geheimen Kubernetes-Schlüssel:
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=="
- Legen Sie die folgenden Werte fest, wenn Sie das Liberty-Helmdiagramm implementieren:
- ssl.enabled=true
- Mit dieser Option wird das Helmdiagramm über die Verwendung des sicheren Protokolls (HTTPS) informiert.
- ssl.useClusterSSLConfiguration=true
- Mit dieser Option wird das Helmdiagramm angewiesen, das erstellte Zertifikat zu mounten, das für den Keystore und den Truststore verwendet wird.
- ssl.createClusterSSLConfiguration=false
- Mit dieser Option wird Helm angewiesen, die Liberty-Konfiguration, die die Zertifikate und geheimen Schlüssel anderer Anbieter verwendet, nicht zu erstellen.
- service.port=Nummer_des_sicheren_Ports
- Der sichere Standardport ist 9443.
- service.targetPort=Nummer_des_sicheren_Ports
- Der sichere Standardport ist 9443.
- ingress.secureBackends=true
- Wenn Ingress aktiviert ist, verwenden Sie diese Option, sodass Ingress mit der gesicherten Liberty-Anwendung kommunizieren kann.