Valores predeterminados de SSL en Liberty
Especifica el certificado SSL predeterminado, el almacén de claves y la configuración 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.
<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.
- 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.
- 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.
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.
<sslDefault sslRef="customSSLConfiguration" />
Los atributos de la configuración 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 SSL predeterminada de Liberty.
Liberty utiliza el SSLContext predeterminado de JSSE si no se establece una configuración 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 ninguna configuración SSL predeterminada si la característica SSL no está definida o si la configuración SSL que existe no se ha identificado 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.