Oracle

Configuration d'utilitaires pour authentifier les utilisateurs avec un certificat SSL client et serveur

Vous pouvez configurer la classe AllDBConnector pour utiliser des certificats SSL Oracle Wallet pour authentifier un utilisateur afin d'établir une connexion de base de données pour les utilitaires HCL Commerce.

Pourquoi et quand exécuter cette tâche

Lorsque vous définissez cette configuration, le serveur de base de données Oracle s'authentifie sur le client via un canal chiffré avec un certificat SSL. Le client s'authentifie également lui-même sur le serveur via un canal chiffré avec un certificat SSL. Une fois que le client et serveur sont authentifiés, la connexion de base de données pour l'utilitaire est établie. En configurant la connexion de base de données pour que les utilitaires authentifient les utilisateurs avec des certificats SSL, la classe AllDBConnector n'a plus besoin de la combinaison de nom d'utilisateur et mot de passe qu'un utilisateur spécifie dans une commande pour exécuter un utilitaire. Etant donné que la classe n'a plus besoin du mot de passe de base de données pour authentifier un utilisateur, le mot de passe de base de données n'est pas envoyé entre le client et le serveur pour authentifier un utilisateur.

Pour effectuer les étapes suivantes, vous devez exécuter les utilitaires Oracle orapki et Listener Control et mettre à jour les fichiers de configuration Oracle. Pour plus d'informations sur la configuration des fichiers Oracle, en exécutant ces utilitaires Oracle, y compris toute syntaxe d'utilisation mise à jour, voir Oracle Documentation.

Remarque : Si vous devez partager des certificats sur plusieurs niveaux du serveur, vous pouvez copier Oracle Wallet d'un niveau de serveur vers les autres niveaux de serveur. Par exemple, pour configurer des utilitaires comme l'utilitaire stagingprop afin qu'ils utilisent un Oracle Wallet pour authentifier les utilisateurs, vous pouvez créer le portefeuille dans votre environnement de transfert, puis copier le portefeuille dans votre environnement de production. Vous devez créer la configuration override dans le fichier alldbconnector.xml pour les deux environnements. Pour la configuration override de votre environnement de production, utilisez le chemin d'accès vers le portefeuille copié avec la valeur wallet_directory pour la propriété oracle.net.wallet_location.

Procédure

Configurez votre serveur de base de données pour utiliser un portefeuille Oracle qui inclut un certificat SSL pour l'authentification.
  1. Modifiez l'utilisateur de base de données Oracle afin que l'utilisateur puisse être identifié par un certificat SSL.
    Exécutez la commande suivante à partir du répertoire Oracle bin :
    sqlplus / as sysdba
    alter user wcs identified externally as 'CN=oracleuser';
    quit;
    
    Remarque : Si votre niveau serveur est le même que votre niveau client, assurez-vous que votre DN utilisateur est identique à votre niveau serveur. Par exemple,
    alter user wcs identified externally as 'CN=server';
  2. Créez un portefeuille Oracle avec l'utilitaire Oracle orapki.
    Dans un utilitaire de ligne de commande, exécutez la commande suivante à partir du répertoire Oracle bin :
    orapki wallet create -wallet wallet_directory -auto_login -pwd wallet_password
    
    • wallet_directory est le répertoire dans lequel vous voulez créer le portefeuille. Par exemple, c:\server.wallet.
      Remarque : Assurez-vous que le répertoire que vous définissez comme wallet_directory est lisible et exécutable par les utilisateurs appropriés.
    • wallet_password est le mot de passe que vous souhaitez définir pour le portefeuille. Par exemple, s3rv3rp45s.
    Par exemple,
    orapki wallet create -wallet c:\server.wallet -auto_login -pwd s3rv3rp45s
    
  3. Installez le certificat qui est délivré par l'autorité de certification.
    Pour plus d'informations sur la création d'une requête de certificat et l'installation du certificat, voir Oracle Documentation.
    Comme exemple à des fins de test, ajoutez un certificat autosigné à votre portefeuille Oracle pour l'utiliser comme certificat de serveur de base de données. Dans un utilitaire de ligne de commande, exécutez la commande suivante à partir du répertoire Oracle bin :
    orapki wallet add -wallet wallet_directory -dn "dn_name" -keysize 1024 
    -self_signed -validity 365 -user_cert -trusted_cert -pwd wallet_password
    • wallet_directory est le répertoire dans lequel vous voulez créer le portefeuille. Par exemple, c:\server.wallet.
    • dn_name est le nom distinctif du propriétaire du certificat, qui est le nom du serveur de base de données. Par exemple, CN=server.
    • wallet_password est le mot de passe que vous souhaitez définir pour le portefeuille. Par exemple, s3rv3rp45s.
    Par exemple,
    orapki wallet add -wallet c:\server.wallet -dn "CN=server" -keysize 1024 -self_signed -validity 365 -user_cert -trusted_cert -pwd s3rv3rp45s
  4. Exportez le certificat SSL pour le niveau serveur de base de données.
    Dans un utilitaire de ligne de commande, exécutez la commande suivante à partir du répertoire Oracle bin :
    orapki wallet export -wallet wallet_directory -dn "dn_name" 
    -cert certificate_file -pwd wallet_password
    
    • wallet_directory est le répertoire dans lequel vous voulez créer le portefeuille. Par exemple, c:\server.wallet.
    • dn_name est le nom distinctif du propriétaire du certificat, qui est le nom du serveur de base de données. Par exemple, CN=server.
    • certificate_file est le chemin et le nom du fichier qui doivent être inclus dans le certificat que vous exportez. Par exemple, c:\server.cert.
    • wallet_password est le mot de passe que vous souhaitez définir pour le portefeuille. Par exemple, s3rv3rp45s.
    Par exemple,
    orapki wallet export -wallet c:\server.wallet -dn "CN=server" -cert c:\server.cert -pwd s3rv3rp45s
    
Configurez votre niveau client pour créer un portefeuille Oracle qui comprend le certificat SSL du serveur de base de données et un certificat SSL pour l'authentification des utilisateurs.
Remarque : Si le niveau client où les utilisateurs exécutent les utilitaires HCL Commerce est le même que le niveau serveur de votre base de données, passez à l'étape 12.
  1. Créez un portefeuille Oracle avec l'utilitaire orapki dans votre environnement client.
    Dans un utilitaire de ligne de commande, exécutez la commande suivante à partir du répertoire Oracle bin :
    orapki wallet create -wallet c:\client.wallet -auto_login -pwd cl13ntp45s
    
  2. Importez le certificat SSL à partir du niveau serveur.
    Dans un utilitaire de ligne de commande, exécutez la commande suivante à partir du répertoire Oracle bin :
    orapki wallet add -wallet wallet_directory -trusted_cert 
    -cert certificate_file -pwd wallet_password
    • wallet_directory est le répertoire dans lequel vous voulez créer le portefeuille. Par exemple, c:\client.wallet.
    • certificate_file est le chemin et le nom du fichier qui doivent être inclus dans le certificat que vous exportez. Par exemple, c:\server.cert.
    • wallet_password est le mot de passe que vous souhaitez définir pour le portefeuille. Par exemple, cl13ntp45s.
    Par exemple,
    orapki wallet add -wallet c:\client.wallet -dn "CN=server" -cert c:\server.cert -pwd cl13ntp45s
  3. Mettez à jour le fichier de configuration Oracle sqlnet.ora pour votre client.
    1. Accédez au répertoire suivant et ouvrez le fichier sqlnet.ora pour édition :
      • LinuxORACLE_HOME/network/admin
      • HCL Commerce DeveloperORACLE_HOME\network\admin
      ORACLE_HOME est le répertoire racine de votre base de données Oracle. Par exemple, C:\ORACLE\ORA92.
    2. Mettez à jour les paramètres de configuration pour correspondre aux paramètres de votre système.
      Lorsque vous mettez à jour le fichier, veillez à mettre à jour les paramètres suivants :
      • SQLNET.AUTHENTICATION_SERVICES
      • SSL_CLIENT_AUTHENTICATION
      • SSL_VERSION
      • NAMES.DIRECTORY_PATH
      • WALLET_LOCATION
      Par exemple, vos paramètres peuvent ressembler au fragment de code suivant :
      SQLNET.AUTHENTICATION_SERVICES = (TCPS, BEQ, NTS)
      SSL_VERSION = 3.0
      NAMES.DIRECTORY_PATH = (TNSNAMES, EZCONNECT)
      WALLET_LOCATION =
      (SOURCE =
        (METHOD = FILE)
        (METHOD_DATA =
          (DIRECTORY = c:\client.wallet)
        )
      )
      SSL_CLIENT_AUTHENTICATION = TRUE
      
  4. Mettez à jour le fichier de configuration tnsnames.ora d'Oracle.
    1. Accédez au répertoire suivant et ouvrez le fichier tnsnames.ora pour édition :
      • LinuxORACLE_HOME/network/admin
      • HCL Commerce DeveloperORACLE_HOME\network\admin
      ORACLE_HOME est le répertoire racine de votre base de données Oracle. Par exemple, C:\ORACLE\ORA92.
    2. Ajoutez une entrée TNS qui pointe vers votre serveur de base de données.
      Par exemple, votre configuration peut ressembler au fragment de code suivant :
         WCS =
            (DESCRIPTION =
              (ADDRESS_LIST =
                (ADDRESS = (PROTOCOL = TCPS)(HOST = fahadjwcs.canlab.ibm.com)(PORT = 2484))
              )
              (CONNECT_DATA =
                (SERVER = DEDICATED)
                (SERVICE_NAME = WCS)
              )
            )
      
  5. Installez le certificat qui est délivré par l'autorité de certification.
    Pour plus d'informations sur la création d'une requête de certificat et l'installation du certificat, voir Oracle Documentation.
    Comme exemple à des fins de test, ajoutez un certificat autosigné au portefeuille de niveau client pour l'utiliser comme certificat utilisateur. Si votre client est identique à votre serveur, ajoutez le certificat à votre portefeuille de niveau serveur. Dans un utilitaire de ligne de commande, exécutez la commande suivante à partir du répertoire Oracle bin :
    orapki wallet add -wallet wallet_directory -dn "dn_name" -keysize 1024 -self_signed 
     -validity 365 -user_cert -trusted_cert -pwd wallet_password
    • wallet_directory est le répertoire dans lequel vous voulez créer le portefeuille. Par exemple, c:\client.wallet.
    • dn_name est le nom distinctif du propriétaire du certificat, qui est le nom du serveur de base de données. Par exemple, CN=server.
    • wallet_password est le mot de passe que vous souhaitez définir pour le portefeuille. Par exemple, cl13ntp45s.
    Par exemple,
    orapki wallet add -wallet c:\client.wallet -dn "CN=oracleuser" -keysize 1024 -self_signed 
    -validity 365 -user_cert -trusted_cert -pwd cl13ntp45s
  6. Exportez le certificat SSL utilisateur d'Oracle Wallet du niveau client.
    Dans un utilitaire de ligne de commande, exécutez la commande suivante à partir du répertoire Oracle bin :
    orapki wallet export -wallet c:\client.wallet -dn "CN=oracleuser" -cert c:\user.cert -pwd cl13ntp45s
    
Continuez la configuration du niveau serveur de votre base de données.
  1. Importez le certificat SSL de l'utilisateur à partir de votre Oracle Wallet de niveau client dans Oracle Wallet de niveau serveur.
    Dans un utilitaire de ligne de commande, exécutez la commande suivante à partir du répertoire Oracle bin :
     orapki wallet add -wallet c:\server.wallet -trusted_cert -cert c:\user.cert -pwd s3rv3rp45s
    
  2. Arrêtez votre base de données Oracle en exécutant la commande suivante à partir du répertoire Oracle bin :
    sqlplus / as sysdba
    shutdown immediate;
    quit;
    
  3. Arrêtez l'écouteur Oracle avec l'utilitaire de contrôle de l'écouteur Oracle en exécutant la commande suivante à partir du répertoire Oracle bin :
    lsnrctl stop
    
  4. Mettez à jour le fichier de configuration listener.ora de l'écouteur Oracle.
    1. Accédez au répertoire suivant et ouvrez le fichier listener.ora pour édition :
      • LinuxORACLE_HOME/network/admin
      • HCL Commerce DeveloperORACLE_HOME\network\admin
      ORACLE_HOME est le répertoire racine de votre base de données Oracle. Par exemple : C:\ORACLE\ORA92
    2. Mettez à jour les paramètres de l'écouteur pour correspondre aux paramètres de votre système.
      Lorsque vous mettez à jour le fichier, assurez-vous que vous mettez à jour les paramètres dans les sections suivantes :
      • SID_LIST_LISTENER
      • LISTENER
      • WALLET_LOCATION
      • SSL_CLIENT_AUTHENTICATION
      Par exemple, vos clés mises à jour peuvent ressembler au fragment de code suivant :
      SID_LIST_LISTENER =
      (SID_LIST =
        (SID_DESC =
          (GLOBAL_DBNAME = WCS)
          (SID_NAME = WCS)
          (ORACLE_HOME = Oracle_installdir\dbhome_1)
        )
      )
      LISTENER =
      (DESCRIPTION_LIST =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = TCPS)(HOST = myhostname.mycompany.com)(PORT = 2484))
        )
      )
      WALLET_LOCATION =
      (SOURCE =
        (METHOD = FILE)
        (METHOD_DATA =
          (DIRECTORY = C:\server.wallet)
        )
      )
      SSL_CLIENT_AUTHENTICATION = TRUE
      
  5. Mettez à jour le fichier de configuration sqlnet.ora d'Oracle.
    1. Accédez au répertoire suivant et ouvrez le fichier sqlnet.ora pour édition :
      • LinuxORACLE_HOME/network/admin
      • HCL Commerce DeveloperORACLE_HOME\network\admin
      ORACLE_HOME est le répertoire racine de votre base de données Oracle. Par exemple, C:\ORACLE\ORA92.
    2. Mettez à jour les paramètres de configuration pour correspondre aux paramètres de votre système.
      Lorsque vous mettez à jour le fichier, veillez à mettre à jour les paramètres suivants :
      • SQLNET.AUTHENTICATION_SERVICES
      • SSL_CLIENT_AUTHENTICATION
      • SSL_VERSION
      • NAMES.DIRECTORY_PATH
      • WALLET_LOCATION
      Par exemple, vos paramètres peuvent ressembler au fragment de code suivant :
      SQLNET.AUTHENTICATION_SERVICES = (BEQ, TCPS, NTS)
      SSL_CLIENT_AUTHENTICATION = FALSE
      SSL_VERSION = 3.0
      NAMES.DIRECTORY_PATH = (TNSNAMES, EZCONNECT)
      WALLET_LOCATION =
      (SOURCE =
        (METHOD = FILE)
        (METHOD_DATA =
          (DIRECTORY = C:\server.wallet)
        )
      )
      
  6. Redémarrez l'écouteur Oracle en exécutant la commande suivante à partir du répertoire Oracle bin :
    lsnrctl start
  7. Démarrez votre base de données Oracle en exécutant la commande suivante à partir du répertoire Oracle bin :
    sqlplus / as sysdba
    startup;
    quit;
Définissez la configuration de la classe AllDBConnector pour établir une connexion de base de données pour que les utilitaires HCL Commerce utilisent le certificat dans le portefeuille Wallet.
  1. Mettez à jour le fichier de configuration d'acquisition de connexion de base de données pour assurer que les utilitaires de WebSphere Commerce peuvent authentifier les utilisateurs via Oracle Wallet.
    1. Accédez au répertoire suivant et ouvrez le fichier de configuration alldbconnector.xml pour édition.
      • HCL Commerce DeveloperWCDE_installdir\WC\xml\config
    2. Mettez à jour le fichier alldbconnector.xml pour inclure deux remplacements pour configurer la façon dont les utilitaires authentifient les utilisateurs.
      Dans la première configuration de remplacement, vous devez configurer le remplacement pour votre base de données client locale. Dans la deuxième configuration de remplacement, configurez les propriétés de remplacement de connexion de votre base de données d'environnement de production. Cette seconde configuration de remplacement assure que les utilitaires peuvent utiliser les certificats SSL pour authentifier les utilisateurs quand un utilitaire tel que stagingprop, doit se connecter à plusieurs bases de données.
      Remarque : Pour l'identificateur de propriété de remplacement, oradestwallet, une entrée TNS correspondante, WCSDEST, doit exister dans le fichier de configuration tnsnames.ora pour votre environnement client d'utilitaire.

      Pour plus d'informations sur les propriétés que vous pouvez inclure dans votre configuration de remplacement dans le fichier alldbconnector.xml, voir Acquisition de connexion de base de données pour les utilitaires et les tâches Ant.

      • Si le type de pilote de base de données Oracle est un pilote léger, la configuration de la classe AllDBConnector mise à jour dans le fichier alldbconnector.xml peut ressembler au fragment de code suivant :
        <oracle>
          <override identifier="orasrcwallet">
            <property name="oracle.jdbc.J2EE13Compliant" type="java.lang.Boolean" value="true"/>
            <property name="oracle.net.tns_admin" 
             value="Oracle_installdir\dbhome_1\network\admin" scope="system" />
            <property name="oracle.net.wallet_location" 
             value="(SOURCE=(METHOD=file)(METHOD_DATA=(DIRECTORY=wallet_directory)))" />
            <property name="oracle.net.ssl_version" value="3.0" />
            <property name="oracle.net.authentication_services" value="(TCPS)" />
            <jdbcurl value="jdbc:oracle:thin:@wcs" />
            <security providername="oracle.security.pki.OraclePKIProvider" />
            <jar path="Oracle_installdir\dbhome_1\jlib\oraclepki.jar" />
            <jar path="Oracle_installdir\dbhome_1\jlib\osdt_cert.jar" />
            <jar path="Oracle_installdir\dbhome_1\jlib\osdt_core.jar" />
            <ignoreUserPass />
          </override>
          <override identifier="oradestwallet">
            <property name="oracle.jdbc.J2EE13Compliant" type="java.lang.Boolean" value="true"/>
            <property name="oracle.net.tns_admin" 
             value="Oracle_installdir\dbhome_1\network\admin" scope="system" />
            <property name="oracle.net.wallet_location" 
             value="(SOURCE=(METHOD=file)(METHOD_DATA=(DIRECTORY=wallet_directory)))" />
            <property name="oracle.net.ssl_version" value="3.0" />
            <property name="oracle.net.authentication_services" value="(TCPS)" />
            <jdbcurl value="jdbc:oracle:thin:@wcsdest" />
            <security providername="oracle.security.pki.OraclePKIProvider" />
            <jar path="Oracle_installdir\dbhome_1\jlib\oraclepki.jar" />
            <jar path="Oracle_installdir\dbhome_1\jlib\osdt_cert.jar" />
            <jar path="Oracle_installdir\dbhome_1\jlib\osdt_core.jar" />
            <ignoreUserPass />
          </override>
        </oracle>
        
      • Si le type de pilote de base de données Oracle est un pilote lourd, la configuration de la classe AllDBConnector mise à jour dans le fichier alldbconnector.xml peut ressembler au fragment de code suivant :
        <oracle>
          <override identifier="orasrcwallet">
            <property name="oracle.jdbc.J2EE13Compliant" type="java.lang.Boolean" value="true"/>
            <property name="oracle.net.wallet_location" 
             value="(SOURCE=(METHOD=file)(METHOD_DATA=(DIRECTORY=wallet_directory)))" />
            <property name="oracle.net.ssl_version" value="3.0" />
            <jdbcurl value="jdbc:oracle:oci:@wcs" />
            <security providername="oracle.security.pki.OraclePKIProvider" />
            <jar path="Oracle_installdir\dbhome_1\jlib\oraclepki.jar" />
            <jar path="Oracle_installdir\dbhome_1\jlib\osdt_cert.jar" />
            <jar path="Oracle_installdir\dbhome_1\jlib\osdt_core.jar" />
            <ignoreUserPass />
          </override>
          <override identifier="oradestwallet">
            <property name="oracle.jdbc.J2EE13Compliant" type="java.lang.Boolean" value="true"/>
            <property name="oracle.net.wallet_location" 
             value="(SOURCE=(METHOD=file)(METHOD_DATA=(DIRECTORY=wallet_directory)))" />
            <property name="oracle.net.ssl_version" value="3.0" />
            <jdbcurl value="jdbc:oracle:oci:@wcsdest" />
            <security providername="oracle.security.pki.OraclePKIProvider" />
            <jar path="Oracle_installdir\dbhome_1\jlib\oraclepki.jar" />
            <jar path="Oracle_installdir\dbhome_1\jlib\osdt_cert.jar" />
            <jar path="Oracle_installdir\dbhome_1\jlib\osdt_core.jar" />
            <ignoreUserPass />
          </override>
        </oracle>
        
      • orasrcwallet est l'identificateur de la configuration de remplacement pour votre environnement de création ou de transfert.
      • oradestwallet est l'identificateur de la configuration de remplacement pour votre environnement de production.
      • wallet_directory est le répertoire qui comprend le portefeuille. Par exemple, c:\server.wallet.

Résultats

Vos utilitaires HCL Commerce sont configurés pour authentifier les utilisateurs par le biais d'un portefeuille Oracle Wallet. Pour utiliser cette authentification, un utilisateur peut utiliser une commande modifiée quand il exécute un utilitaire WebSphere Commerce. Au lieu d'inclure les mots de passe de connexion de base de données, un utilisateur doit uniquement identifier le portefeuille qui comprend le certificat SSL approprié. Par exemple, pour exécuter l'utilitaire stagingprop, un utilisateur peut exécuter la commande suivante à partir du répertoire HCL Commerce bin dans un utilitaire de ligne de commande :
  • Linuxstagingprop.sh -sourcedb orasrcwallet -destdb oradestwallet -sourcedb_user randomValue -sourcedb_passwd randomValue -destdb_user randomValue -destdb_passwd randomValue
  • orasrcwallet est l'identificateur de la configuration de remplacement pour votre environnement de création ou de transfert.
  • oradestwallet est l'identificateur de la configuration de remplacement pour votre environnement de production.
  • randomValue est n'importe quelle valeur pour le paramètre spécifié. Avec cette configuration Oracle Wallet, la valeur est ignorée par la classe AllDBConnector et ne sert pas à authentifier l'utilisateur.