Habilitación de la comunicación SSL para el contenedor de clientes de aplicaciones de Liberty
El contenedor de clientes de aplicaciones de Liberty puede necesitar una configuración SSL para que el contenedor de clientes se comunique con un servidor. La configuración SSL del contenedor de clientes de aplicaciones requiere el uso de la misma característica SSL, ssl-1.0, que el servidor necesita para habilitar SSL. Los elementos de configuración y los atributos son los mismos para el cliente de aplicaciones que para el servidor; sin embargo, para el contenedor de cliente de aplicaciones, estos valores se especifican en el archivo client.xml.
Acerca de esta tarea
El reconocimiento SSL es una serie de mensajes intercambiados mediante el protocolo SSL entre un cliente y un servidor para negociar una protección de una conexión específica. Para habilitar SSL para el contenedor de clientes de aplicaciones de Liberty, la característica SSL, ssl-1.0, debe incluir la información mínima que se necesita para formar la configuración SSL que utiliza el cliente. La información mínima que se necesita para formar una configuración SSL es un almacén de claves y una contraseña.
Puede utilizar el mandato securityUtility createSSLCertificate para crear el almacén de claves del cliente y para proporcionarle información sobre la configuración. El uso de la herramienta es opcional, porque también puede crear un almacén de claves y la configuración asociada para otros fines definidos por el cliente.
Procedimiento
<keyStore id="defaultKeyStore" password="yourPassword" />
Esta es la configuración mínima que se necesita para crear una configuración SSL. En esta configuración, el cliente crea el almacén de claves y el certificado si no existe durante la inicialización de SSL. La contraseña que se proporciona debe ser de al menos 6 caracteres de longitud. JKS es el tipo de almacén de claves predeterminado y el almacén de claves predeterminado se denomina key.jks, y estos valores predeterminados están en el directorio <client home>/resources/security.
El cliente creará el defaultKeyStore la primera vez que se inicie cuando se utilice la configuración anterior; sin embargo, el hecho de que el cliente cree el certificado predeterminado implica un coste en el rendimiento. Para evitar ese conste en el rendimiento, se recomienda que se utilice el mandato securityUtilitiy createSSLCertificate para crear el almacén de claves predeterminado utilizado en la configuración de defaultKeyStore.
Si necesita una configuración SSL personalizada, consulte Liberty: Atributos de configuración de SSL .
- Aceptación de los certificados de firmante
- Si el cliente no tiene una relación de confianza establecida con el servidor, la
comunicación con el cliente solicita al usuario si acepta el certificado del servidor. Si
el usuario responde yes, el certificado se
almacena en la configuración del almacén de claves del cliente y el mandato continúa.
Si
el usuario especifica no, no se establece ninguna confianza
y la llamada finaliza con un error.Ejemplo de cómo es la solicitud:
*** SSL SIGNER EXCHANGE PROMPT *** The SSL signer from target host is not found in trust store C:/liberty/workspace/build.image/wlp/usr/clients/myTestClient/resources/security/key.jks. Here is the signer information (verify the digest value matches what is displayed at the server): Subject DN: CN=localhost, O=ibm, C=us Issuer DN: CN=localhost, O=ibm, C=us Serial number: 1327582458 Expires: Sun Jan 04 06:54:18 CST 2099 SHA-1 Digest: 00:6F:25:F1:78:5D:EB:00:B1:E2:99:DB:E8:D7:DF:3B:F8:E0:20:9A Add signer to the trust store now? (y/n)
Puede recibir el siguiente mensaje de error si el usuario especifica no cuando se le pide que añada el firmante al almacén de confianza:[ERROR ] CWPKI0022E: SSL HANDSHAKE FAILURE: A signer with SubjectDN CN=localhost, O=ibm, C=us sent from the target host. The signer might need to be added to local trust store C:/liberty/workspace/build.image/wlp/usr/clients/myTestClient/resources/security/key.jks, located in SSL configuration alias defaultSSLConfig. The extended error message from the SSL handshake exception is: PKIX path building failed: java.security.cert.CertPathBuilderException: PKIXCertPathBuilderImpl could not build a valid CertPath.; internal cause is: java.security.cert.CertPathValidatorException: The certificate issued by SubjectDN CN=localhost, O=ibm, C=us is not trusted; internal cause is: java.security.cert.CertPathValidatorException: Certificate chaining error throw able: javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: PKIX path building failed: java.security.cert.CertPathBuilderException : PKIXCertPathBuilderImpl could not build a valid CertPath.; internal cause is: java.security.cert.CertPathValidatorException: The certificate issued by SubjectDN CN=localhost, O=ibm, C=us is not trusted; internal cause is: java.security.cert.CertPathValidatorException: Certificate chaining error
- Aceptar automáticamente certificado de firmante
- Si el cliente no desea que se le solicite el certificado de firmante y decide aceptar el
certificado de firmante de servidor sin examinar el certificado, el usuario puede proporcionar el
distintivo -autoAcceptSigner en la línea de mandatos del contenedor cliente.
client run client_name --autoAcceptSigner
- Autenticación de cliente
- Si el cliente se comunica con un servidor que tiene la autenticación de cliente habilitada, el servidor debe confiar en el cliente y el cliente debe confiar en el servidor. El cliente debe tener una clave y un certificado personal en su almacén de claves. Si utiliza el mandato securityUtility createSSLCertificate, el almacén de claves contiene un certificado personal. El servidor con el que se comunica el contenedor de la aplicación cliente debe confiar en el cliente, por lo que el firmante del cliente debe añadirse al almacén de confianza del servidor. Puede utilizar la herramienta java, keytool, para extraer el firmante del almacén de claves del contenedor de clientes de aplicaciones y añadir el certificado del cliente al almacén de confianza del servidor.