Oracle

Configuración de programas de utilidad para autenticar usuarios con un certificado SSL de cliente y servidor

Puede configurar la clase AllDBConnector para que utilice certificados SSL de Oracle Wallet que autentiquen un usuario para que establezca una conexión de base de datos para los programas de utilidad de HCL Commerce.

Por qué y cuándo se efectúa esta tarea

Cuando establece esta configuración, el servidor de base de datos Oracle se autentica en el cliente a través de un canal cifrado con un certificado SSL. El cliente también se autentica en el servidor a través de un canal cifrado con un certificado SSL. Una vez que el cliente y el servidor se han autenticado, se establece la conexión de base de datos para el programa de utilidad. Al configurar la conexión de base de datos para que los programas de utilidad autentiquen usuarios con certificados SSL, la clase AllDBConnector ya no necesitará la combinación de nombre de usuario y contraseña que un usuario especifica en un mandato para ejecutar un programa de utilidad. Dado que la clase que no necesita la contraseña de base de datos para autenticar un usuario, la contraseña de base de datos no se envía entre el cliente y el servidor para autenticar un usuario.

Para completar los siguientes pasos, debe ejecutar los programas de utilidad Listener Control y orapki de Oracle y actualizar los archivos de configuración de Oracle.orapki Para obtener más información sobre cómo configurar los archivos de Oracle, ejecutar estos programas de utilidad de Oracle, incluidos toda la sintaxis de uso actualizado, consulte Oracle Documentation.

Nota: Si necesita compartir certificados entre varios niveles de servidor, puede copiar Oracle Wallet de un nivel de servidor en los otros niveles de servidor. Por ejemplo, para configurar programas de utilidad como el programa de utilidad stagingprop de modo que utilicen un Oracle Wallet para autenticar usuarios, puede crear Wallet en el entorno de transición y, a continuación, copiar el Wallet en el entorno de producción. Debe crear la configuración de override en el archivo alldbconnector.xml para los dos entornos. Para la configuración de override, utilice la vía de acceso al Wallet copiado como el valor wallet_directory para la propiedad oracle.net.wallet_location.

Procedimiento

Configure el servidor de base de datos para utilizar Oracle Wallet que incluya un certificado SSL para su autenticación.
  1. Modifique el usuario de base de datos de Oracle para que el usuario pueda identificarse mediante un certificado SSL.
    Ejecute el siguiente mandato desde el directorio bin de Oracle:
    sqlplus / as sysdba
    alter user wcs identified externally as 'CN=oracleuser';
    quit;
    
    Nota: Si el nivel de servidor es el mismo que el nivel de cliente, asegúrese de que el DN es el mismo que el nivel de servidor. Por ejemplo,
    alter user wcs identified externally as 'CN=server';
  2. Cree un Oracle Wallet con el programa de utilidad orapki de Oracle.
    En un programa de utilidad de línea de mandatos, ejecute el siguiente mandato desde el directoriobin de Oracle:
    orapki wallet create -wallet wallet_directory -auto_login -pwd wallet_password
    
    Donde
    • wallet_directory es el directorio en el que desea crear la Wallet. Por ejemplo, c:\server.wallet.
      Nota: Asegúrese de que el directorio que se establece como wallet_directory puedan leerlo y ejecutarlo los usuarios adecuados.
    • wallet_password es la contraseña que desea establecer para la Wallet. Por ejemplo, s3rv3rp45s.
    Por ejemplo,
    orapki wallet create -wallet c:\server.wallet -auto_login -pwd s3rv3rp45s
    
  3. Instale el certificado emitido por la entidad emisora de certificados.
    Para obtener más información sobre cómo crear una solicitud de certificado e instalar el certificado, consulte Oracle Documentation.
    Como ejemplo para fines de prueba, añada un certificado firmado automáticamente a Oracle Wallet para utilizarlo como certificado de servidor de base de datos. En un programa de utilidad de línea de mandatos, ejecute el siguiente mandato desde el directorio bin de Oracle:
    orapki wallet add -wallet wallet_directory -dn "dn_name" -keysize 1024 
    -self_signed -validity 365 -user_cert -trusted_cert -pwd wallet_password
    Donde
    • wallet_directory es el directorio en el que desea crear la Wallet. Por ejemplo, c:\server.wallet.
    • dn_name es el nombre distinguido del propietario del certificado, que es el nombre del servidor de la base de datos. Por ejemplo, CN=server.
    • wallet_password es la contraseña que desea establecer para la Wallet. Por ejemplo, s3rv3rp45s.
    Por ejemplo,
    orapki wallet add -wallet c:\server.wallet -dn "CN=server" -keysize 1024 -self_signed -validity 365 -user_cert -trusted_cert -pwd s3rv3rp45s
  4. Exporte el certificado SSL para el nivel de servidor de base de datos.
    En un programa de utilidad de línea de mandatos, ejecute el siguiente mandato desde el directorio bin de Oracle:
    orapki wallet export -wallet wallet_directory -dn "dn_name" 
    -cert certificate_file -pwd wallet_password
    
    Donde
    • wallet_directory es el directorio en el que desea crear la Wallet. Por ejemplo, c:\server.wallet.
    • dn_name es el nombre distinguido del propietario del certificado, que es el nombre del servidor de la base de datos. Por ejemplo, CN=server.
    • certificate_file es la vía de acceso y el nombre de archivo en el que debe incluir el certificado que exporta. Por ejemplo, c:\server.cert.
    • wallet_password es la contraseña que desea establecer para la Wallet. Por ejemplo, s3rv3rp45s.
    Por ejemplo,
    orapki wallet export -wallet c:\server.wallet -dn "CN=server" -cert c:\server.cert -pwd s3rv3rp45s
    
Configure el nivel de cliente para crear un Oracle Wallet que incluya un certificado SSL de servidor de base de datos y un certificado SSL para autenticar usuarios.
Nota: Si el nivel de cliente donde los usuarios ejecutan programas de utilidad de HCL Commerce es el mismo que el nivel de servidor de base de datos, salte al paso 12.
  1. Cree un Oracle Wallet con el programa de utilidad orapki en el entorno de cliente.
    En un programa de utilidad de línea de mandatos, ejecute el siguiente mandato desde el directorio bin de Oracle:
    orapki wallet create -wallet c:\client.wallet -auto_login -pwd cl13ntp45s
    
  2. Importe el certificado SSL del nivel de servidor.
    En un programa de utilidad de línea de mandatos, ejecute el siguiente mandato desde el directorio bin de Oracle:
    orapki wallet add -wallet wallet_directory -trusted_cert 
    -cert certificate_file -pwd wallet_password
    Donde
    • wallet_directory es el directorio en el que desea crear la Wallet. Por ejemplo, c:\client.wallet.
    • certificate_file es la vía de acceso y el nombre de archivo en el que debe incluir el certificado que exporta. Por ejemplo, c:\server.cert.
    • wallet_password es la contraseña que desea establecer para la Wallet. Por ejemplo, cl13ntp45s.
    Por ejemplo,
    orapki wallet add -wallet c:\client.wallet -dn "CN=server" -cert c:\server.cert -pwd cl13ntp45s
  3. Actualice el archivo de configuración sqlnet.ora de Oracle para el cliente.
    1. Vaya al siguiente directorio y abra el archivo sqlnet.ora para editar:
      • LinuxORACLE_HOME/network/admin
      • HCL Commerce DeveloperORACLE_HOME\network\admin
      Donde ORACLE_HOME es el directorio raíz para la base de datos Oracle. Por ejemplo, C:\ORACLE\ORA92.
    2. Actualice los parámetros de configuración para que coincidan con los valores del sistema.
      Cuando actualice el archivo, asegúrese de actualizar los siguientes parámetros:
      • SQLNET.AUTHENTICATION_SERVICES
      • SSL_CLIENT_AUTHENTICATION
      • SSL_VERSION
      • NAMES.DIRECTORY_PATH
      • WALLET_LOCATION
      Por ejemplo, los parámetros pueden parecerse al siguiente fragmento de código:
      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. Actualice el archivo de configuración tnsnames.ora de Oracle.
    1. Vaya al siguiente directorio y abra el archivo tnsnames.ora para editar:
      • LinuxORACLE_HOME/network/admin
      • HCL Commerce DeveloperORACLE_HOME\network\admin
      Donde ORACLE_HOME es el directorio raíz para la base de datos Oracle. Por ejemplo, C:\ORACLE\ORA92.
    2. Añadir una entrada TNS que apunte al servidor de bases de datos.
      Por ejemplo, la configuración puede parecerse al siguiente fragmento de código:
         WCS =
            (DESCRIPTION =
              (ADDRESS_LIST =
                (ADDRESS = (PROTOCOL = TCPS)(HOST = fahadjwcs.canlab.ibm.com)(PORT = 2484))
              )
              (CONNECT_DATA =
                (SERVER = DEDICATED)
                (SERVICE_NAME = WCS)
              )
            )
      
  5. Instale el certificado emitido por la entidad emisora de certificados.
    Para obtener más información sobre cómo crear una solicitud de certificado e instalar el certificado, consulte Oracle Documentation.
    Como ejemplo para fines de prueba, añada un certificado firmado automáticamente a Wallet de nivel de cliente para utilizarlo como certificado de usuario. Si el cliente es el mismo que el servidor, añada el certificado a Wallet de nivel de servidor. En un programa de utilidad de línea de mandatos, ejecute el siguiente mandato desde el directorio bin de Oracle:
    orapki wallet add -wallet wallet_directory -dn "dn_name" -keysize 1024 -self_signed 
     -validity 365 -user_cert -trusted_cert -pwd wallet_password
    Donde
    • wallet_directory es el directorio en el que desea crear la Wallet. Por ejemplo, c:\client.wallet.
    • dn_name es el nombre distinguido del propietario del certificado, que es el nombre del servidor de la base de datos. Por ejemplo, CN=server.
    • wallet_password es la contraseña que desea establecer para la Wallet. Por ejemplo, cl13ntp45s.
    Por ejemplo,
    orapki wallet add -wallet c:\client.wallet -dn "CN=oracleuser" -keysize 1024 -self_signed 
    -validity 365 -user_cert -trusted_cert -pwd cl13ntp45s
  6. Exporte el certificado SSL de usuario desde Oracle Wallet de nivel de cliente.
    En un programa de utilidad de línea de mandatos, ejecute el siguiente mandato desde el directorio bin de Oracle:
    orapki wallet export -wallet c:\client.wallet -dn "CN=oracleuser" -cert c:\user.cert -pwd cl13ntp45s
    
Continúe la configuración para el nivel de servidor de base de datos.
  1. Importe el certificado SSL de usuario de Oracle Wallet de nivel de cliente en Oracle Wallet de nivel de servidor.
    En un programa de utilidad de línea de mandatos, ejecute el siguiente mandato desde el directorio bin de Oracle:
     orapki wallet add -wallet c:\server.wallet -trusted_cert -cert c:\user.cert -pwd s3rv3rp45s
    
  2. Concluya la base de datos Oracle ejecutando el siguiente mandato desde el directorio bin de Oracle:bin
    sqlplus / as sysdba
    shutdown immediate;
    quit;
    
  3. Detenga el oyente de Oracle con el programa de utilidad Listener Control de Oracle mediante la ejecución del siguiente mandato desde el directorio bin de Oracle:
    lsnrctl stop
    
  4. Actualice el archivo de configuración listener.ora del oyente de Oracle.
    1. Vaya al siguiente directorio y abra el archivo listener.ora para editar:
      • LinuxORACLE_HOME/network/admin
      • HCL Commerce DeveloperORACLE_HOME\network\admin
      Donde ORACLE_HOME es el directorio raíz para la base de datos Oracle. Por ejemplo, C:\ORACLE\ORA92
    2. Actualice los parámetros del escucha para que coincidan con los valores del sistema.
      Cuando actualice el archivo, asegúrese de actualizar los parámetros en las siguientes secciones:
      • SID_LIST_LISTENER
      • LISTENER
      • WALLET_LOCATION
      • SSL_CLIENT_AUTHENTICATION
      Por ejemplo, las claves actualizadas pueden parecerse al siguiente fragmento de código:
      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. Actualice el archivo de configuración sqlnet.ora de Oracle.
    1. Vaya al siguiente directorio y abra el archivo sqlnet.ora para editar:
      • LinuxORACLE_HOME/network/admin
      • HCL Commerce DeveloperORACLE_HOME\network\admin
      Donde ORACLE_HOME es el directorio raíz para la base de datos Oracle. Por ejemplo, C:\ORACLE\ORA92.
    2. Actualice los parámetros de configuración para que coincidan con los valores del sistema.
      Cuando actualice el archivo, asegúrese de actualizar los siguientes parámetros:
      • SQLNET.AUTHENTICATION_SERVICES
      • SSL_CLIENT_AUTHENTICATION
      • SSL_VERSION
      • NAMES.DIRECTORY_PATH
      • WALLET_LOCATION
      Por ejemplo, los parámetros pueden parecerse al siguiente fragmento de código:
      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. Reinicie el oyente de Oracle mediante la ejecución del siguiente mandato desde el directorio bin de Oracle:
    lsnrctl start
  7. Inicie la base de datos Oracle ejecutando el siguiente mandato desde el directorio bin de Oracle:bin
    sqlplus / as sysdba
    startup;
    quit;
Ejecute la configuración de clase AllDBConnector para establecer una conexión de base de datos para que los programas de utilidad de HCL Commerce utilicen el certificado en el Oracle Wallet.
  1. Actualice el archivo de configuración de adquisición de conexión de base de datos para asegurarse de que los programas de utilidad de WebSphere Commerce pueden autenticar usuarios a través de Oracle Wallet.
    1. Vaya al siguiente directorio y abra el archivo de configuración alldbconnector.xml para editarlo.
      • HCL Commerce DeveloperWCDE_installdir\WC\xml\config
    2. Actualice el archivo alldbconnector.xml para incluir dos sustituciones que configuren el modo en que los programas de utilidad autentican los usuarios.
      En la primera configuración de sustitución, debe configurar la sustitución para la base de datos de cliente local. En la segunda configuración de sustitución, configure las propiedades de sustitución de conexión para la base de datos de entorno de producción. Esta segunda configuración de sustitución garantiza que los programas de utilidad puedan utilizar los certificados SSL para autenticar los usuarios cuando un programa de utilidad, como el programa de utilidad stagingprop, deba conectarse a varias bases de datos.
      Nota: Para sustituir el identificador de propiedad, oradestwallet, una entrada TNS correspondiente, WCSDEST, debe existir en el archivo de configuración tnsnames.ora para el entorno de cliente del programa de utilidad.

      Para obtener más información sobre las propiedades que se pueden incluir en la configuración de sustitución del archivo alldbconnector.xml, consulte Adquisición de la conexión de base de datos para programas de utilidad y tareas Ant.

      • Si el tipo de controlador de base de datos Oracle es un controlador ligero, la configuración de la clase AllDBConnector actualizada en el archivo alldbconnector.xml puede parecerse al siguiente fragmento de código:
        <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 el tipo de controlador de base de datos Oracle es un controlador pesado, la configuración de clase AllDBConnector actualizada en el archivo alldbconnector.xml puede parecerse al siguiente fragmento de código:
        <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>
        
      Donde
      • orasrcwallet es el identificador de la configuración de sustitución para el entorno de creación o transición.
      • oradestwallet es el identificador de la configuración de sustitución para el entorno de producción.
      • wallet_directory es el directorio que incluye la Wallet. Por ejemplo, c:\server.wallet.

Resultados

Los programas de utilidad de HCL Commerce están configurados para autenticar usuarios a través de Oracle Wallet. Para utilizar esta autenticación, un usuario puede utilizar un mandato modificado cuando ejecuta un programa de utilidad de WebSphere Commerce. En lugar de incluir contraseñas de conexiones de base de datos, un usuario solo necesita identificar el Wallet que incluye el certificado SSL adecuado. Por ejemplo, para ejecutar el programa de utilidad stagingprop, un usuario puede ejecutar el siguiente mandato desde el directorio HCL Commerce bin en un programa de utilidad de línea de mandatos:
  • Linuxstagingprop.sh -sourcedb orasrcwallet -destdb oradestwallet -sourcedb_user randomValue -sourcedb_passwd randomValue -destdb_user randomValue -destdb_passwd randomValue
Donde
  • orasrcwallet es el identificador de la configuración de sustitución para el entorno de creación o transición.
  • oradestwallet es el identificador de la configuración de sustitución para el entorno de producción.
  • randomValuees cualquier valor para el parámetro especificado. Con esta configuración de Oracle Wallet, el valor se ignora por la clase AllDBConnector y no se utiliza para autenticar el usuario.