Configuración de Java Runtime Environment para utilizar TLS

Para poder utilizar las conexiones TLS (Transport Layer Security) en las aplicaciones JDBC y SQLJ, debe configurar Java™ Runtime Environment para utilizar TLS. Se proporciona un procedimiento de ejemplo. Sin embargo, el procedimiento puede ser diferente dependiendo del Java Runtime Environment que utilice.

Antes de empezar

Para poder configurar Java Runtime Environment para TLS, debe cumplir los requisitos previos siguientes:
  • Java Runtime Environment debe incluir un proveedor de seguridad Java. El proveedor JSSE de IBM® o el proveedor SunJSSE deben estar instalados. El proveedor JSSE de IBM se instala automáticamente con el SDK de IBM para Java.
    Restricción: puede utilizar el proveedor SunJSSE sólo con un Oracle Java Runtime Environment. El proveedor SunJSSE no funciona con un IBM Java Runtime Environment.
  • El soporte de TLS debe estar configurado en el servidor de bases de datos.

Procedimiento

Para configurar Java Runtime Environment para utilizar TLS, siga estos pasos:

  1. Importar un certificado del servidor de bases de datos a un almacén de confianza Java en el cliente.

    Utilice el programa de utilidad Java keytool para importar el certificado en el almacén de confianza.

    Ejemplo: Supongamos que el certificado de servidor se almacena en un archivo denominado cacerts. Emita la siguiente sentencia del programa de utilidad keytool para leer el certificado del archivo jcc.cacert y almacenarlo en un almacén de confianza denominado cacerts.
    keytool -import -file jcc.cacert -keystore cacerts
    Ejemplo: Suponga que el certificado de servidor se almacena en un archivo denominado mydbserver.arm. Emita la siguiente sentencia de programa de utilidad keytool para leer el certificado del archivo mydbserver.army almacenarlo en un almacén de confianza denominado mynewdbclient.jks.
    keytool -import -trustcacerts -alias myalias -file mydbserver.arm -keystore mynewdbclient.jks
  2. Configure Java Runtime Environment para los proveedores de seguridad Java añadiendo entradas al archivo java.security .

    El formato de una entrada de proveedor de seguridad es:

    security.provider.n=provider-package-name
    

    Un proveedor con un valor inferior a n tiene prioridad sobre un proveedor con un valor superior a n.

    Las entradas del proveedor de seguridad Java que añada dependen de si utiliza el proveedor JSSE de IBM o el proveedor SunJSSE .

    • Si utiliza el proveedor SunJSSE, añada entradas para los proveedores de seguridad Oracle al archivo java.security.
    • Si utiliza el proveedor JSSE de IBM , utilice uno de los métodos siguientes:
      • Utilice el proveedor IBMJSSE2 (soportado para IBM SDK for Java 1.4.2 y posterior):
        Recomendación: Utilice el proveedor IBMJSSE2 y utilícelo en modalidad FIPS.
        • Si no necesita operar en modalidad compatible con FIPS:
          • Para IBM SDK for Java 1.4.2, añada una entrada para IBMJSSE2Provider al archivo java.security . Asegúrese de que haya una entrada para el proveedor IBMJCE en el archivo java.security. El archivo java.security que se suministra con IBM SDK for Java contiene una entrada para entradas para IBMJCE.
          • Para versiones posteriores de IBM SDK for Java, asegúrese de que las entradas para el proveedor IBMJSSE2Provider y IBMJCE estén en el archivo java.security . El archivo java.security que se suministra con IBM SDK for Java contiene entradas para dichos proveedores.
        • Si necesita operar en modalidad compatible con FIPS:
          • Añada una entrada para el proveedor IBMJCEFIPS en el archivo java.security antes de la entrada para el proveedor IBMJCE. No elimine la entrada del proveedor IBMJCE.
          • Habilite la modalidad FIPS en el proveedor IBMJSSE2. Consulte el paso 3.
      • Utilice el proveedor IBMJSSE (soportado solo para IBM SDK for Java 1.4.2 ):
        • Si no necesita operar en modalidad compatible con FIPS, asegúrese de que haya entradas para el proveedor IBMJSSEProvider y IBMJCE en el archivo java.security. El archivo java.security que se suministra con IBM SDK for Java contiene entradas para dichos proveedores.
        • Si necesita operar en modalidad compatible con FIPS, añada entradas para el proveedor aprobado por FIPS IBMJSSEFIPSProvider y el proveedor IBMJCEFIPS en el archivo java.security, antes de la entrada del proveedor IBMJCE.
      Restricción: Si utiliza el proveedor IBMJSSE en el sistema operativo Solaris, debe incluir una entrada para el proveedor SunJSSE antes de las entradas para los proveedores IBMJCE, IBMJCEFIPS, IBMJSSEo IBMJSSE2 .

    Ejemplo: Utilice un archivo java.security similar a éste si necesita ejecutar en modalidad compatible con FIPS y ha habilitado la modalidad FIPS en el proveedor IBMJSSE2:

    # Set the Java security providers
    security.provider.1=com.ibm.jsse2.IBMJSSEProvider2
    security.provider.2=com.ibm.crypto.fips.provider.IBMJCEFIPS
    security.provider.3=com.ibm.crypto.provider.IBMJCE
    security.provider.4=com.ibm.security.jgss.IBMJGSSProvider
    security.provider.5=com.ibm.security.cert.IBMCertPath
    security.provider.6=com.ibm.security.sasl.IBMSASL
    

    Ejemplo: Utilice un archivo java.security similar a éste si necesita ejecutar en modalidad compatible con FIPS y utiliza el proveedor IBMJSSE2:

    # Set the Java security providers
    security.provider.1=com.ibm.fips.jsse.IBMJSSEFIPSProvider
    security.provider.2=com.ibm.crypto.fips.provider.IBMJCEFIPS
    security.provider.3=com.ibm.crypto.provider.IBMJCE
    security.provider.4=com.ibm.security.jgss.IBMJGSSProvider
    security.provider.5=com.ibm.security.cert.IBMCertPath
    security.provider.6=com.ibm.security.sasl.IBMSASL
    

    Ejemplo: Utilice un archivo java.security similar a este ejemplo si utiliza el proveedor SunJSSE:

    # Set the Java security providers
    security.provider.1=sun.security.provider.Sun
    security.provider.2=com.sun.rsajca.Provider
    security.provider.3=com.sun.crypto.provider.SunJCE
    security.provider.4=com.sun.net.ssl.internal.ssl.Provider
  3. Si tiene previsto utilizar IBM Data Server Driver for JDBC and SQLJ en modalidad compatible con FIPS, debe establecer la propiedad del sistema Java com.ibm.jsse2.JSSEFIPS :
    com.ibm.jsse2.JSSEFIPS=true 
    Restricción: Las aplicaciones JSSE que no son de modalidad FIPS no se pueden ejecutar en una JVM que esté en modalidad FIPS.
    Restricción: Cuando el proveedor de IBMJSSE2 se ejecuta en modalidad FIPS, no puede utilizar la criptografía de hardware.
  4. Configure Java Runtime Environment para los proveedores de fábrica de sockets TLS añadiendo entradas al archivo java.security . Este paso no es necesario si está utilizando el proveedor SunJSSE y Java Runtime Environment, 7 o posterior.

    Se muestra el formato de las entradas de proveedor de fábrica de sockets TLS :

    ssl.SocketFactory.provider=provider-package-name
    ssl.ServerSocketFactory.provider=provider-package-name

    Especifique el proveedor de fábrica de sockets TLS para el proveedor de seguridad Java que está utilizando.

    Ejemplo: Cuando habilite la modalidad FIPS en el proveedor IBMJSSE2 , incluya las entradas de proveedor de fábrica de sockets TLS en el archivo java.security :

    # Set the TLS socket factory provider
    ssl.SocketFactory.provider=com.ibm.jsse2.SSLSocketFactoryImpl 
    ssl.ServerSocketFactory.provider=com.ibm.jsse2.SSLServerSocketFactoryImpl 
    

    Ejemplo: Cuando habilite la modalidad FIPS en el proveedor IBMJSSE, incluya las entradas de proveedor de fábrica de sockets TLS en el archivo java.security :

    # Set the TLS socket factory provider
    ssl.SocketFactory.provider=com.ibm.fips.jsse.JSSESocketFactory
    ssl.ServerSocketFactory.provider=com.ibm.fips.jsse.JSSEServerSocketFactory
    

    Ejemplo: Cuando utilice el proveedor SunJSSE y Java Runtime Environment, 6 o anterior, incluya entradas de proveedor de fábrica de sockets TLS :

    # Set the TLS socket factory provider
    ssl.SocketFactory.provider=com.sun.net.ssl.internal.ssl.SSLSocketFactoryImpl
    ssl.ServerSocketFactory.provider=com.sun.net.ssl.internal.ssl.SSLServerSocketFactoryImpl
    
  5. Configure las propiedades del sistema Java para utilizar el almacén de confianza.

    Para ello, establezca las siguientes propiedades del sistema Java:

    javax.net.ssl.trustStore
    Especifica el nombre del almacén de confianza que ha especificado con el parámetro -keystore en el programa de utilidad keytool en el paso 1.
    javax.net.ssl.trustStorePassword (opcional)
    Especifica la contraseña para el almacén de confianza. No es necesario establecer una contraseña del almacén de confianza. No obstante, si no establece la contraseña, no puede proteger la integridad del almacén de confianza.

    Ejemplo: Una forma de establecer las propiedades del sistema Java es especificarlas como argumentos de la opción -D al ejecutar una aplicación Java. Supongamos que desea ejecutar una aplicación Java denominada MyTLS.java, que accede a un origen de datos utilizando una conexión TLS . Si ha definido un almacén de confianza denominado cacerts, el mandato siguiente establece el nombre del almacén de confianza al ejecutar la aplicación.

    java -Djavax.net.ssl.trustStore=cacerts MyTLS
  6. Para habilitar el proveedor de Tarjeta de acceso común (IBMCAC), sobrescriba las definiciones de almacén de claves y almacén de confianza por omisión:
    -Djavax.net.ssl.trustStoreType=Windows-ROOT
    -Djavax.net.ssl.keyStoreType=Windows-MY