L'étape suivante vous explique comment activer une couche de sécurité pour la communication entre les noeuds finals de votre environnement.
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
Cette commande permet de créer un fichier de clés key.jks contenant une clé "ogsample". Ce fichier de clés key.jks sera utilisé en tant que fichier de clés SSL.
keytool -export -alias ogsample -keystore key.jks -file temp.key -storepass ogpass
Cette commande permet d'extraire et de stocker le certificat public de la clé "ogsample" dans le fichier temp.key.
keytool -import -noprompt -alias ogsamplepublic -keystore trust.jks -file temp.key -storepass ogpass
Cette commande permet d'ajouter le certificat public au fichier de clés trust.jks. Ce fichier trust.jks est utilisé en tant que fichier de clés certifiées SSL.
Au cours de cette étape, vous devez configurer le fichier de propriétés ObjectGrid pour activer la sécurité du transport.
Tout d'abord, copiez les fichiers key.jks et trust.jks dans le répertoire objectgridRoot/security.
Définissez les propriétés suivantes dans les fichiers client.properties et 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 : la valeur de transportType est définie sur "SSL-Required", ce qui signifie que le transport requiert la couche Secure Sockets Layer. La configuration SSL doit être définie pour tous les points de contact ObjectGrid (clients, serveurs de catalogue et serveurs de conteneur). Tous les transports seront chiffrés.
Les autres propriétés sont utilisées pour définir les configurations SSL. Pour plus d'informations, voir Protocole TLS et couche de connexion sécurisée. Veillez à suivre les instructions de cette rubrique pour mettre à jour votre fichier orb.properties.
Assurez-vous de suivre les instructions de cette page pour mettre à jour le fichier orb.properties.
Dans le fichier server.properties, vous devez ajouter une propriété supplémentaire clientAuthentication et la définir sur false. Du côté serveur, vous n'avez pas besoin de certifier le client.
clientAuthentication=false
Ces commandes sont identiques aux commandes de la section Tutoriel sur la sécurité Java SE - Etape 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"
Les fichiers security.xml et server.properties ont été créés au cours de la procédure de la section Tutoriel sur la sécurité Java SE - Etape 2.
Utilisez l'option -JMXServicePort pour spécifier explicitement le port JMX pour le serveur. Cette option est nécessaire pour pouvoir utiliser l'utilitaire xscmd.
Démarrez le serveur de conteneur ObjectGrid sécurisé :
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"
Exécutez la commande suivante pour l'authentification de client :
javaHome/java -classpath ../lib/objectgrid.jar;../applib/sec_sample.jar
com.ibm.websphere.objectgrid.security.sample.guide.SecureSimpleApp
../security/client.properties manager manager1
Etant donné que l'utilisateur "manager" bénéficie de droits d'accès à toutes les mappes de l'ObjectGrid accounting, l'application s'exécute correctement.
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
Notez que le port JMX du service de catalogue est ici spécifié par le biais de -p 11001.
La sortie suivante s'affiche.
Cet utilitaire administratif est fourni à titre d'exemple uniquement
et ne doit pas être considéré en tant que composant pris en charge par WebSphere eXtreme Scale.
Connexion au service de catalogue au localhost:1099
*********** Résultats pour la grille - accounting, MapSet - client ***********
*** Liste des mappes pour c0 ***
Nom de la mappe : client N° de partition #: 0 Taille de la mappe : 1 Type de fragment : principal
Nombre de serveurs : 1
Nombre de domaines : 1
Exécution de l'application avec un fichier de clés incorrect
Si votre fichier de clés certifiées ne contient pas le certificat public de la clé publique dans le fichier de clés, une exception s'affiche et vous indique que la clé n'est pas certifiée.
Pour afficher cela, créez un autre fichier de clés 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
Modifiez ensuite server.properties pour faire pointer le fichier de clés vers ce nouveau fichier de clés key2.jks:
keyStore=../security/key2.jks
Exécutez la commande suivante pour démarrer le serveur de catalogue :
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"
L'exception suivante s'affiche :
Caused by: com.ibm.websphere.objectgrid.ObjectGridRPCException:
com.ibm.websphere.objectgrid.ObjectGridRuntimeException:
SSL connection fails and plain socket cannot be used.
Enfin, modifiez le fichier server.properties pour utiliser de nouveau le fichier key.jks.