Tutoriel sur la sécurité Java SE - Etape 6

L'étape suivante vous explique comment activer une couche de sécurité pour la communication entre les noeuds finals de votre environnement.

Avant de commencer

Assurez-vous d'avoir terminé le Tutoriel sur la sécurité Java SE - Etape 5 avant de commencer cette étape.

Pourquoi et quand exécuter cette tâche

La topologie eXtreme Scale prend en charge les protocoles TLS (Transport Layer Security) et SSL (Secure Sockets Layer) pour sécuriser la communication entre les noeuds finals de l'ObjectGrid (client, serveurs de conteneur et serveurs de catalogue). Cette étape du tutoriel se base sur les étapes précédentes pour activer la sécurité du transport.

Procédure

  1. Création de clés et de fichiers de clés TLS/SSL
    Afin d'activer la sécurité du transport, vous devez créer un fichier de clés et un fichier de clés certifiées. Cet exercice crée une seule clé et une seule paire fichier de clés-fichier de clés certifiées. Ces fichiers sont utilisés pour les clients, les serveurs de conteneur et les serveurs de catalogue ObjectGrid et sont créés par le biais de la commande keytool du Java Development Kit.
    • Créer une clé privée dans le fichier de clés

      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.

    • Exporter le certificat public

      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.

    • Importer le certificat public du client dans le fichier de clés certifiées

      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.

  2. Configuration des fichiers de propriétés d'ObjectGrid

    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

  3. Exécution de l'application

    Ces commandes sont identiques aux commandes de la section Tutoriel sur la sécurité Java SE - Etape 3.

    Utilisez les commandes suivantes pour démarrer un serveur de catalogue.
    1. Accédez au répertoire bin : cd objectgridRoot/bin
    2. Démarrez le serveur de catalogue :
      • [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"

      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é :

    3. Placez-vous de nouveau dans le répertoire 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"
    Veuillez noter les différences suivantes concernant la commande de démarrage de serveur de conteneur précédente :
    • Utilisez SecureSimpleApp.xml à la place des fichiers SimpleApp.xml.
    • Ajoutez un autre argument -Djava.security.auth.policy pour définir le fichier de règles de l'autorisation JAAS sur le processus du serveur de conteneur.

    Exécutez la commande suivante pour l'authentification de client :

    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

      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.

    Vous pouvez utiliser l'utilitaire xscmd pour afficher les tailles de mappes de la grille "accounting".
    • Placez-vous dans le répertoire objectgridRoot/bin.
    • Utilisez la commande xscmd pour afficher les tailles de mappes :
      • [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

      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 :

    1. Placez-vous dans le répertoire bin : cd objectgridRoot/bin
    2. Démarrez le serveur de catalogue :
      [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"

      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.