Ejecute Liberty en un entorno en el que haya que utilizar certificados de terceros existentes que puedan estar firmados por una autoridad certificadora que sea de confianza.
Antes de empezar
- Cree un archivo server.crt que contenga el certificado y un archivo server.key que contenga la clave privada.
- Utilice el comando openssl y el comando Java keytool para crear el archivo trust.jks y el archivo key.jks a partir de los archivos server.crt y server.key.
Utilice el siguiente ejemplo para crear los archivos JKS de almacén de confianza y de almacén de claves:
- Exporte el certificado CA y la clave de servidor en el formato de los estándares de criptografía de claves públicas 12 (PKCS12).
openssl pkcs12 -export -in server.crt -inkey server.key -out key.p12 -name default -passout pass:micontraseña
- Importe el archivo PKCS12 de servidor en el archivo key.jks de almacén de claves.
keytool -importkeystore -deststorepass micontraseña -destkeypass micontraseña -destkeystore key.jks -srckeystore key.p12 -srcstoretype PKCS12 -srcstorepass micontraseña -alias default
- Importe el certificado de autoridad emisora de certificados de servidor en el archivo trust.jks de almacén de claves.
keytool -importcert -keystore trust.jks -storepass micontraseña -file server.crt -alias default -noprompt
- Determine si la configuración SSL ya está creada. Para ello, compruebe si existen los secretos ejecutando el comando siguiente:
kubectl get secrets
Si la configuración SSL existe, se mostrarán los secretos siguientes:
mb-keystore, mb-keystore-password, mb-truststore, mb-truststore-password
Procedimiento
- Si la configuración SSL no se ha creado, siga estos pasos para habilitar SSL automáticamente con certificados de terceros:
- Cree las siguientes claves secretas de Kubernetes. Este ejemplo usa el comando Liberty
securityUtility encode para codificar la contraseña del almacén de claves y del almacén de confianza con un cifrado 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=="
- Establezca los valores siguientes al desplegar el diagrama Helm de Liberty:
- ssl.enabled=true
- Esta opción indica al diagrama Helm que se va a usar el protocolo seguro HTTPS.
- ssl.useClusterSSLConfiguration=true
- Esta opción indica al diagrama Helm que monte el certificado creado, que se utiliza en el almacén de claves y en el almacén de confianza.
- ssl.createClusterSSLConfiguration=true
- Esta opción indica a Helm que cree la configuración de Liberty que utiliza certificados de terceros y secretos de contraseña. Cuando se establece a true, esta opción no sobrescribe los certificados ni secretos recién creados.
- service.port=número_puerto_seguro
- El puerto seguro predeterminado es 9443.
- service.targetPort=número_puerto_seguro
- El puerto seguro predeterminado es 9443.
- ingress.secureBackends=true
- Si Ingress está habilitado, use esta opción para que Ingress pueda comunicarse con la aplicación segura de Liberty.
- Si la configuración SSL ya está creada, siga estos pasos para habilitar SSL de forma automática:
- Borre los secretos creados anteriormente.
kubectl delete secrets mb-keystore mb-keystore-password mb-truststore mb-truststore-password
- Cree las siguientes claves secretas de 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=="
- Establezca los valores siguientes al desplegar el diagrama Helm de Liberty:
- ssl.enabled=true
- Esta opción indica al diagrama Helm que se va a usar el protocolo seguro HTTPS.
- ssl.useClusterSSLConfiguration=true
- Esta opción indica al diagrama Helm que monte el certificado creado, que se utiliza en el almacén de claves y en el almacén de confianza.
- ssl.createClusterSSLConfiguration=false
- Esta opción indica a Helm que no cree la configuración de Liberty que utiliza certificados de terceros y secretos de contraseña.
- service.port=número_puerto_seguro
- El puerto seguro predeterminado es 9443.
- service.targetPort=número_puerto_seguro
- El puerto seguro predeterminado es 9443.
- ingress.secureBackends=true
- Si Ingress está habilitado, use esta opción para que Ingress pueda comunicarse con la aplicación segura de Liberty.