Oracle

Configuración de programas de utilidad para autenticar usuarios con un certificado SSL y una contraseña de cliente

Puede configurar la clase AllDBConnector para que utilice un certificado SSL de Oracle Wallet y una contraseña proporcionada por el usuario para autenticar un usuario que establezca una conexión de base de datos para un programa de utilidad.

Con esta configuración, el servidor de base de datos Oracle utiliza un certificado SSL en Oracle Wallet en el nivel de servidor para autenticarse con el cliente del programa de utilidad a través de un canal cifrado. A continuación, la clase AllDBConnector validará el certificado SSL en el nivel de cliente y autentica el usuario a través del nombre de usuario y contraseña. No es necesario enviar la contraseña de base de datos del usuario del nivel de cliente al nivel de servidor. Entre el servidor y el cliente solo es necesario enviar el certificado SSL del nivel de servidor.

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

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. 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.

Procedimiento

Configure el servidor de base de datos para utilizar Oracle Wallet que incluya un certificado SSL para su autenticación.
  1. 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
    
  2. 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
  3. Exporte el certificado SSL para el 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:bin
    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
    
  4. Concluya la base de datos Oracle con la ejecución del siguiente mandato desde el directorio bin de Oracle:
    sqlplus / as sysdba
    shutdown immediate;
    quit;
    
  5. 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
    
  6. 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 = FALSE
      
  7. 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)
        )
      )
      
  8. Reinicie el oyente de Oracle mediante la ejecución del siguiente mandato desde el directorio bin de Oracle:
    lsnrctl start
  9. Inicie la base de datos de Oracle mediante la ejecución del siguiente mandato desde el directorio bin de Oracle:
    sqlplus / as sysdba
    startup;
    quit;
Configure el nivel de cliente del programa de utilidad de modo que incluya un Oracle Wallet, que incluye los certificados SSL adecuados.
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 15.
  1. Cree un Oracle Wallet con el programa de utilidad orapki en el entorno de cliente.
    Por ejemplo, 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 de base de datos.
    Por ejemplo, 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 -trusted_cert -cert c:\server.cert -pwd cl13ntp45s
  3. Opcional: Si importa certificados de varios servidores, asegúrese de que los certificados tienen nombres distinguidos (DN) distintos.
  4. Asegúrese de que Oracle Wallet pueda leerlo el usuario o grupo que necesite invocar cualquiera de los programas de utilidad de HCL Commerce.
    Por ejemplo, el grupo que incluye el usuario de WebSphere Application Server.
  5. 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 = FALSE
      
  6. 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ñada una entrada TNS al archivo tnsnames.ora. La entrada debe apuntar al servidor de base de datos.
      Por ejemplo, la configuración puede parecerse al siguiente fragmento de código:
      WCS =
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCPS)(HOST = myhostname.mycompany.com)(PORT = 2484))
        )
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = WCS)
        )
      )
      
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 conexión de base de datos para la clase AllDBConnector para asegurarse de que los programas de utilidad de HCL Commerce puedan autenticar usuarios con 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" />
          </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" />
          </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" />
          </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" />
          </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, los usuarios que ejecutan un programa de utilidad de HCL Commerce pueden continuar ejecutando normalmente el programa de utilidad. Los usuarios no necesitan cambiar ninguno de los parámetros que definen cuando ejecutan un programa de utilidad.