El siguiente paso le explica cómo habilitar una capa de seguridad para la comunicación entre los puntos finales del entorno.
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.
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.
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.
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
Los mandatos son los mismos que en el tema Guía de aprendizaje de seguridad de Java SE - Paso 3.
startOgServer.sh catalogServer -clusterSecurityFile ../security/security.xml
-serverProps ../security/server.properties -JMXServicePort 11001
-jvmArgs -Djava.security.auth.login.config="../security/og_jaas.config"
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:
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"
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"
Ejecute el siguiente mandato para la autenticación de cliente:
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.
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
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:
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"
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.