Configuración del Entorno de ejecución Java para que utilice SSL

Para poder utilizar conexiones SSL (Secure Sockets Layer) en las aplicaciones JDBC y SQLJ, debe configurar Java™ Runtime Environment para utilizar SSL. 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 SSL, 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 debe estar instalado. 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 SSL debe configurarse en el servidor de bases de datos.

Procedimiento

Para configurar Java Runtime Environment para utilizar SSL, 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 keytool de Java 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 del programa de utilidad keytool para leer el certificado del archivo mydbserver.arm y 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 de 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 IBMJSSE2Provider y el proveedor 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 sólo 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

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

    # 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
    security.provider.10=com.ibm.security.capi.IBMCAC

    Para obtener más información sobre el proveedor IBMCAC, consulte Introducción al proveedor IBMCAC.

  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 IBMJSSE2 se ejecuta en modalidad FIPS, no puede utilizar criptografía de hardware.
  4. Configure Java Runtime Environment para los proveedores de fábrica de sockets SSL añadiendo entradas al archivo java.security . Este paso no es necesario si utiliza el proveedor SunJSSE y Java Runtime Environment, 7 o posterior.

    El formato de las entradas del proveedor de fábrica de sockets SSL se muestra así:

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

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

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

    # Set the SSL 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 entradas de proveedor de fábrica de sockets SSL en el archivo java.security:

    # Set the SSL 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 SSL:

    # Set the SSL 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.

    Si se establece la propiedad de IBM Data Server Driver for JDBC and SQLJ DB2BaseDataSource.sslTrustStoreLocation, db2.jcc.override.sslTrustStoreLocationo db2.jcc.sslTrustStoreLocation , su valor altera temporalmente el Valor de la propiedad javax.net.ssl.trustStore.

    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.

    Si se establece la propiedad de IBM Data Server Driver for JDBC and SQLJ DB2BaseDataSource.sslTrustStorePassword, db2.jcc.override.sslTrustStorePasswordo db2.jcc.sslTrustStorePassword , su valor altera temporalmente la Valor de la propiedad javax.net.ssl.trustStore.

    Si va a utilizar un archivo de certificado de confianza (si DB2BaseDataSource.sslCertLocation, db2.jcc.override.sslCertLocation, o db2.jcc.sslCertLocation se han establecido), no se utilizarán los valores javax.net.ssl.trustStore o javax.net.ssl.trustStorePassword.

    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 MySSL.java, que accede a un origen de datos utilizando una conexión SSL. Si ha definido un almacén de confianza denominado cacerts, el mandato siguiente establece el nombre del almacén de confianza cuando se ejecuta la aplicación.

    java -Djavax.net.ssl.trustStore=cacerts MySSL
  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