Valores predeterminados SSL en Liberty

Especifica el certificado, el almacén de claves y la configuración de SSL predeterminados en Liberty.

Certificado y almacén de claves predeterminados

Como práctica herramienta para ayudar a los desarolladores a ponerse en marcha y trabajar, los usuarios pueden utilizar el parámetro createSSLCertificate en el mandato securityUtility para crear los certificados firmados automáticamente. Los usuarios pueden llamar a la herramienta directamente desde la línea de mandatos o permitir que el servidor la llame para crear el certificado predeterminado y el almacén de claves en el arranque del servidor.

El servidor crea el almacén de claves y el certificado predeterminados, si un usuario tiene un elemento de almacén de claves que se llama defaultKeyStore en el archivo server.xml. Por ejemplo:
<keyStore id="defaultKeyStore" password="yourPassword" />

Si tiene lugar una configuración de almacén de claves para defaultKeyStore y el almacén de claves no existe cuando se inicia el servidor, el servidor llama al parámetro createSSLCertificate. Este parámetro crea el almacén de claves con una contraseña que se especifica en la configuración.

Detalles del almacén de claves predeterminado:
  • Ubicación: el archivo de almacén de claves se llama key.jks y está en el directorio resources/security del servidor o clientes.
  • Tipo de almacén de claves: el tipo de almacén de claves es JKS.
  • Contraseña: la contraseña que se proporciona en la configuración.
Detalles del certificado predeterminado creado por Liberty:
  • Tipo: el certificado es un certificado firmado automáticamente.
  • Tamaño: el tamaño predeterminado del certificado es 2048.
  • Algoritmo de firma: el algoritmo de firma para el certificado es SHA256WITHRSA.
  • Validez: el certificado es válido durante 365 días.
  • DN de sujeto: el certificado se crea con CN=<hostname>,OU=<nombre de cliente o servidor>,O=ibm,C=US as the SubjectDN.

Se puede llamar al parámetro createSSLCertificate en la línea de mandatos, si los usuarios desean personalizar el certificado.

Nota: Cuando el uso de un controlador colectivo no es práctico, quizás solo hay uno o dos servidores, Liberty, se puede utilizar un certificado firmado automáticamente para restringir el número de clientes que se pueden conectar al servidor miembro Liberty. Se sugiere que se utiliza un servidor IHS delante de los servidores Liberty, cuando se puede utilizar un certificado firmado CA apropiado, junto con un CN que realiza listas blancas para controlar qué clientes se pueden conectar a HIS. Se puede mantener un canal de confianza entre IHS y el servidor miembro Liberty utilizando el certificado firmado automáticamente.

Configuración predeterminada de SSL

La configuración mínima necesaria para SSL es un único elemento de almacén de claves llamado defaultKeyStore. Cuando existe defaultKeyStore en la configuración, el tiempo de ejecución crea una configuración de SSL denominada defaultSSLConfig alrededor.

Detalles de defaultSSLConfig:

  • Protocolo: Cuando se utiliza IBM® JRE, el protocolo está establecido en SSL_TLSv2 de forma predeterminada. Si se utiliza el Oracle JRE, se utiliza SSL como protocolo.
  • Cifrados: la lista de cifrados se genera obteniendo una lista de cifrados soportados del JRE subyacente. De forma predeterminada, la lista se reduce a todos los cifrados de 128 bits y superiores o 3DES. Los RC4 se eliminan porque su habilitación no se considera segura. Los cifrados ECDHE se eliminan porque pueden provocar errores si va a un servidor que no los soporta. La lista de cifrados se puede personalizar para incluirlos.
  • Autenticación de cliente: de forma predeterminada, clientAuthentication y clientAuthenticationSupported están inhabilitados.
  • Almacén de claves: en la configuración predeterminada, se utiliza defaultKeyStore como almacén de claves y de confianza.

Se puede especificar un elemento SSL que se llama defaultSSLConfig en el archivo server.xml para la personalización de las propiedades de configuración de SSL. Un elemento ssl personalizado que se llama defaultSSLConfig se sigue tratando como la configuración SSL predeterminada cuando no se identifica una configuración SSL diferente como valor predeterminado. Para obtener más información, consulte Atributos de configuración SSL.

Para designar un elemento ssl diferente en la configuración como la configuración predeterminada de SSL, los usuarios pueden identificarlo con el elemento sslDefault.
<sslDefault sslRef="customSSLConfiguration" />

[17.0.0.1 and later]Tanto (transportSecurity-1.0) como (ssl-1.0) son comportamientos de proceso de seguridad. El comportamiento transportSecurity-1.0 reemplaza el comportamiento ssl-1.0 en el fixpack 17.0.0.1 y posteriores. Use el comportamiento transportSecurity-1.0 para emplear las opciones SSL de la conexión saliente. Si la configuración de seguridad no incluye opciones de conexión saliente, se puede seguir utilizando el comportamiento ssl-1.0.

El comportamiento (transportSecurity-1.0)

Cuando se habilita la característica transportSecurity-1.0, las opciones SSL de salida quedan disponibles. Se puede establecer un valor predeterminado de salida con el atributo outboundSSLRef en el elemento sslDefault o establecer el filtro SSL en la configuración SSL para permitir conexiones de salida dinámicas. El filtro consta de un host o de un host y un puerto. En función del host y del puerto de la conexión de salida, la conexión de salida puede coincidir con la configuración SSL.

El código del entorno de ejecución SSL no establece el proceso predeterminado SSLContext cuando se habilita la característica transportSecurity-1.0. El código del entorno de ejecución SSL establece la clase personalizada ssl.SocketFactory.provider con la propiedad de seguridad Java™ SSLSocketFactory. El valor predeterminado del proceso SSLContext es el valor predeterminado de SSLContext de Java Secure Socket Extension (JSSE) que usa el archivo cacerts para la clave y la confianza.

El programa devuelve la fábrica de sockets SSL predeterminada de Liberty a cualquier código que intente obtener el valor predeterminado de clase SSLSocketFactory con la propiedad javax.net.ssl.SSLSocketFactory.getDefault(). La clase SSLSocketFactory personalizada puede resolver la configuración SSL adecuada para la conexión de salida.

Las características que Liberty proporciona utilizan configuraciones SSL de Liberty. Sin embargo, las API de terceros que realizan llamadas SSL de salida podría requerir una configuración que use prestaciones de Liberty. El Liberty código del entorno de ejecución de SSL no establece el valor predeterminado del proceso SSLContext cuando se habilitan las características transportSecurity-1.0 o ssl-1.0. Las API de terceros que se apoyan en el contexto SSL predeterminado no aprovechan la configuración SSL de Liberty. Cuando la característica transportSecurity-1.0 está habilitada, el código de tiempo de ejecución SSL de Liberty establece una clase SSLSocketFactory personalizada con la propiedad de seguridad ssl.SocketFactory.provider de Java. Las API de terceros pueden aprovechar la configuración SSL de Liberty con el valor predeterminado de SocketFactory invocando la propiedad javax.net.ssl.SSLSocketFactory.getDefault().
Nota: La Liberty clase SSLSocketFactory personalizada no reconoce las propiedades de sistema Java como, por ejemplo, javax.net.ssl.keystore.
El comportamiento (ssl-1.0)

Los atributos de la configuración de SSL predeterminada de Liberty se utilizan para crear un SSLContext. Dicho SSLContext se establece en el proceso como el SSLContext predeterminado utilizando la API Java SSLContext.setDefault(). Si una aplicación llama a la API como httpURLConnection() con un URL https y no proporciona ninguna información de SSL, la aplicación toma el SSLContext predeterminado del proceso. En este caso es el SSLContext que se crea con la configuración de SSL predeterminada de Liberty.

Liberty utiliza el SSLContext predeterminado de JSSE si no se establece una configuración de SSL predeterminada en Liberty. El SSLContext predeterminado de JSSE utiliza el archivo cacerts para el almacén de claves y el almacén de confianza. Liberty no tiene una configuración de SSL predeterminada si la característica SSL no está definida o si la configuración de SSL que existe no está identificada como valor predeterminado. La configuración predeterminada se llama defaultSSLConfig, que puede ser implícita si se define defaultKeyStore o se puede designar una configuración SSL alternativa utilizando el elemento sslDefault.

Las propiedades del sistema javax, javax.net.ssl.keystore, se utilizan para configurar la información de almacén de claves y de almacén de confianza para el contexto SSL predeterminado y no se deben utilizar. Si las propiedades están establecidas en el proceso, la llamada a SSLContext.setDefault() las borra.

[17.0.0.1 and later]Para permitir que SSL se utilice como el valor predeterminado para conexiones SSL de salida, puede utilizar el atributo outboundSSLRef en el elemento sslDefault.
<feature>transportSecurity-1.0</feature>
<sslDefault sslRef="mySSLConfig" outboundSSLRef="customSSLConfiguration" />
Para especificar un elemento SSL de salida, la característica transportSecurity-1.0 debe estar habilitada. Cuando se especifica outboundSSLRef, las conexiones SSL de salida utiliza de forma predeterminada una configuración de SSL especificada por dicho atributo. Si falta la característica transportSecurity-1.0, se ignora outboundSSLRef. Si no se especifica ningún atributo outboundSSLRef, la llamada de salida utiliza el valor especificado por el atributo sslRef o defaultSSLConfig si sslRef no hace referencia a una configuración de SSL.

Icono que indica el tipo de tema Tema de referencia

Nombre de archivo: rwlp_liberty_ssl_defaults.html