Guía de aprendizaje de seguridad de Java SE - Paso 6

El siguiente paso le explica cómo habilitar una capa de seguridad para la comunicación entre los puntos finales del entorno.

Antes de empezar

Asegúrese de haber completado el apartado Guía de aprendizaje de seguridad de Java SE - Paso 5 antes de llevar a cabo esta tarea.

Acerca de esta tarea

La topología de eXtreme Scale da soporte a Transport Layer Security/Secure Sockets Layer (TLS/SSL) para la comunicación segura entre puntos finales de ObjectGrid (cliente, servidores de contenedor y servidores de catálogo). Este paso de la guía de aprendizaje se basa en los pasos anteriores para habilitar la seguridad de transporte.

Procedimiento

  1. Cree almacenes de claves y claves de TLS/SSL
    Para habilitar la seguridad de transporte, debe crear un almacén de claves y un almacén de confianza. Este ejercicio sólo crea un par de almacén de claves y almacén de confianza. Estos almacenes se utilizan para los servidores de catálogo, servidores de contenedor y clientes ObjectGrid, y se crean con la herramienta de claves de JDK.
    • Crear una clave privada en el almacén de claves

      keytool -genkey -alias ogsample -keystore key.jks -storetype JKS -keyalg rsa -dname "CN=ogsample, OU=OGSample, O=acme, L=Your City, S=Your State, C=Your Country" -storepass ogpass -keypass ogpass -validity 3650

      Con este mandato, se crea un almacén de claves key.jks con una clave "ogsample" almacenada en él. Este almacén de claves key.jks se utilizará como el almacén de claves SSL.

    • Exportar el certificado público

      keytool -export -alias ogsample -keystore key.jks -file temp.key -storepass ogpass

      Con este mandato, se extrae el certificado público de la clave "ogsample" y se almacena en el archivo temp.key.

    • Importar el certificado público del cliente en el almacén de confianza

      keytool -import -noprompt -alias ogsamplepublic -keystore trust.jks -file temp.key -storepass ogpass

      Con este mandato, el certificado público se ha añadido al almacén de claves trust.jks. Este trust.jks se utiliza como el almacén de confianza SSL.

  2. Configuración de los archivos de propiedades de ObjectGrid

    En este paso, debe configurar los archivos de propiedades de ObjectGrid para habilitar la seguridad de transporte.

    Primero, copie los archivos key.jks y trust.jks en el directorio objectgridRoot/security.

    Establezca las propiedades siguientes en el archivo client.properties y server.properties.

    transportType=SSL-Required
    
    alias=ogsample
    contextProvider=IBMJSSE2
    protocol=SSL
    keyStoreType=JKS
    keyStore=../security/key.jks
    keyStorePassword=ogpass
    trustStoreType=JKS
    trustStore=../security/trust.jks
    trustStorePassword=ogpass

    transportType: el valor de transportType se establece en "SSL-Required", que significa que el transporte requiere SSL. Por lo tanto, todos los puntos finales de ObjectGrid (clientes, servidores de catálogo y servidores de contenedor deben tener establecida la configuración SSL y toda la comunicación de transporte estará cifrada.

    Las otras propiedades se utilizan para establecer las configuraciones SSL. Consulte Transport Layer Security (TLC) y Secure Sockets Layer (SSL) para ver una explicación detallada. Asegúrese de seguir las instrucciones de este tema para actualizar el archivo orb.properties.

    Asegúrese de que sigue esta página para actualizar el archivo orb.properties.

    En el archivo server.properties , debe añadir una propiedad adicional clientAuthentication y establecerla en false (falso). En el lado del servidor, no es necesario que confíe en el cliente.

    clientAuthentication=false

  3. Ejecute la aplicación

    Los mandatos son los mismos que en el tema Guía de aprendizaje de seguridad de Java SE - Paso 3.

    Utilice los siguientes mandatos para iniciar un servidor de catálogo.
    1. Vaya al directorio bin: cd objectgridRoot/bin
    2. Inicie el servidor de catálogo:
      • [Linux][Unix]
        startOgServer.sh catalogServer -clusterSecurityFile ../security/security.xml
        -serverProps ../security/server.properties -JMXServicePort 11001
        -jvmArgs -Djava.security.auth.login.config="../security/og_jaas.config"
      • [Windows]
        startOgServer.bat catalogServer -clusterSecurityFile ../security/security.xml
        -serverProps ../security/server.properties -JMXServicePort 11001 -jvmArgs
        -Djava.security.auth.login.config="../security/og_jaas.config"

      Los archivos security.xml y server.properties se crearon en la página Guía de aprendizaje de seguridad de Java SE - Paso 2.

      Utilice la opción -JMXServicePort para especificar explícitamente el puerto JMX para el servidor. Esta opción es necesaria para utilizar el programa de utilidad xscmd.

      Ejecute un servidor de contenedor de ObjectGrid seguro:

    3. Vuelva al directorio bin: cd objectgridRoot/bin
      • [Linux][Unix]
        startOgServer.sh c0 -objectGridFile ../xml/SecureSimpleApp.xml
        -deploymentPolicyFile ../xml/SimpleDP.xml -catalogServiceEndPoints 
        localhost:2809 -serverProps ../security/server.properties
        -JMXServicePort 11002 -jvmArgs
        -Djava.security.auth.login.config="../security/og_jaas.config"
        -Djava.security.auth.policy="../security/og_auth.policy"
      • [Windows]
        startOgServer.bat c0 -objectGridFile ../xml/SecureSimpleApp.xml
        -deploymentPolicyFile ../xml/SimpleDP.xml -catalogServiceEndPoints localhost:2809 
        -serverProps ../security/server.properties -JMXServicePort 11002
        -jvmArgs -Djava.security.auth.login.config="../security/og_jaas.config" 
        -Djava.security.auth.policy="../security/og_auth.policy"
    Tenga en cuenta las siguientes diferencias del mandato de inicio de servidor de contenedor anterior:
    • Utilice SecureSimpleApp.xml en lugar de archivos SimpleApp.xml.
    • Añada otro -Djava.security.auth.policy para establecer el archivo de política de autorización de JAAS para el proceso de servidor de contenedor.

    Ejecute el siguiente mandato para la autenticación de cliente:

    1. cd objectgridRoot/bin
    2. javaHome/java -classpath ../lib/objectgrid.jar;../applib/sec_sample.jar 
      com.ibm.websphere.objectgrid.security.sample.guide.SecureSimpleApp
      ../security/client.properties manager manager1

      Como el usuario "manager" tiene permiso para todas las correlaciones del accounting ObjectGrid, la aplicación se ejecuta satisfactoriamente.

    Puede utilizar el programa de utilidad xscmd para que se muestren los tamaños de correlación de la cuadrícula "accounting".
    • Vaya hasta el directorio objectgridRoot/bin.
    • Utilice el mandato xscmd para que se muestren los tamaños de correlación:
      • [Unix][Linux]
        xscmd.sh -c showMapsizes -g accounting -m customer -prot SSL 
        -ts .\security\trust.jks -tsp ogpass -tst jks 
        -user manager -pwd manager1 -ks ..\security\key.jks -ksp ogpass -kst JKS 
        -cxpv IBMJSSE2 -tt SSL-Required
      • [Windows]
        xscmd.bat -c showMapsizes -g accounting -m customer -prot SSL 
        -ts ..\security\trust.jks -tsp ogpass -tst jks 
        -user manager -pwd manager1 -ks ..\security\key.jks -ksp ogpass -kst JKS 
        -cxpv IBMJSSE2 -tt SSL-Required

      Tenga en cuenta que se especifica el puerto JMX del servicio de catálogo utilizando aquí -p 11001.

      Obtendrá la siguiente salida.

      Este programa de utilidad administrativo se proporciona sólo como un ejemplo y no se debe
      considerar como un componente completamente soportado del producto WebSphere eXtreme Scale.
      Conexión al servicio de catálogo en localhost:1099
      *********** Visualización de resultados para la cuadrícula - accounting, MapSet - customer ***********
      *** Listado de correlaciones para c0 ***
      Nombre de correlación: customer Núm. de partición: 0 Tamaño de correlación: 1 Tipo de fragmento: primario
      Total de servidores: 1
      Recuento total de dominios: 1

    Ejecución de la aplicación con un almacén de claves incorrecto

    Si el almacén de confianza no contiene el certificado público de la clave privada en el almacén de claves, obtendrá una excepción que indica que no se puede confiar en la clave.

    Para mostrarlo, cree otro almacén de claves key2.jks.

    keytool -genkey -alias ogsample -keystore key2.jks -storetype JKS -keyalg rsa -dname "CN=ogsample, OU=Your Organizational Unit, O=Your Organization, L=Your City, S=Your State, C=Your Country" -storepass ogpass -keypass ogpass -validity 3650

    Después, modifique server.properties de forma que keyStore señale a este nuevo almacén de claves key2.jks:

    keyStore=../security/key2.jks

    Ejecute el siguiente mandato para iniciar el servidor de catálogo:

    1. Desplácese al directorio bin: cd objectgridRoot/bin
    2. Inicie el servidor de catálogo:
      [Linux][Unix]
      startOgServer.sh c0 -objectGridFile ../xml/SecureSimpleApp.xml
      -deploymentPolicyFile ../xml/SimpleDP.xml -catalogServiceEndPoints localhost:2809 
      -serverProps ../security/server.properties -jvmArgs
      -Djava.security.auth.login.config="../security/og_jaas.config"
      -Djava.security.auth.policy="../security/og_auth.policy"
      [Windows]
      startOgServer.bat c0 -objectGridFile ../xml/SecureSimpleApp.xml
      -deploymentPolicyFile ../xml/SimpleDP.xml -catalogServiceEndPoints localhost:2809
       -serverProps ../security/server.properties -jvmArgs
      -Djava.security.auth.login.config="../security/og_jaas.config"
      -Djava.security.auth.policy="../security/og_auth.policy"

      Verá la siguiente excepción:

      Caused by: com.ibm.websphere.objectgrid.ObjectGridRPCException:
          com.ibm.websphere.objectgrid.ObjectGridRuntimeException:
              SSL connection fails and plain socket cannot be used.

      Finalmente, vuelva a cambiar el archivo server.properties para utilizar el archivo key.jks.