Programa de utilidad MigrateEncryptedInfo

MigrateEncryptedInfo es un programa de utilidad que modifica la clave de comerciante y vuelve a cifrar todos los datos cifrados de la base de datos.

De forma predeterminada, gestiona las tablas siguientes, tal como se especifica en DBUpdate.txt: USERREG, USERPWDHST, PATTRVALUE, ORDPAYINFO, ORDPAYMTHD, PPCEXTDATA, PPCPAYINST, MERCHCONFINFO, GRUSERAUTH, CSEDITATT, ISEDITATT. Para ejecutar el programa de utilidad MigrateEncryptedInfo más eficientemente, se recomienda ejecutar primero el programa de utilidad para limpiar la base de datos en alguna de estas tablas que pueda tener datos obsoletos que se puedan eliminar, por ejemplo la tabla PPCEXTDATA. Para obtener información sobre cómo optimizar MigrateEncryptedInfo, consulte: Optimización del programa de utilidad MigrateEncryptedInfo. Hay dos modos de especificar los valores de la clave de comerciante para esta herramienta. El primer modo es proporcionar las claves de comerciante antiguas y nuevas a través de los argumentos de línea de mandatos. El segundo modo consiste en recuperar las claves e invocar Key Locator Framework mediante el parámetro "-k".
Importante: Debe especificar sus propios valores de clave de comerciante y clave de cifrado de claves para la seguridad de la instalación HCL Commerce. No utilice los valores predeterminados contenidos en los archivos de configuración de ejemplo y ejemplos de documentación proporcionados.

Gestión de tablas personalizadas utilizando la utilidad MigrateEncryptedInfo

Las tablas personalizadas que se utilizarán para el cifrado deben cifrarse utilizando la clase DataReEncrypter. El ID ReEncryptUserPasswordHistory del archivo DBUpdate.txt debe utilizarse para enumerar las tablas personalizadas que se cifrarán. Al menos un campo de la tabla debe contener datos cifrados y debe incluirse en el archivo DBUpdate.txt.

A continuación, se muestra el ejemplo de cómo añadir una tabla personalizada en DBUpdate.txt:
[DBTable]
TableName=<Custom_Table_Name>
TableColumns=<Encrypted_Values_Column_Names>
UniqueColumns=<Unique_Values_Column_Names>
[Parameter]
ID=OldEncryptionKey
DisplayID=OldEncryptionKey
Value=
TableName
Nombre de la tabla personalizada que se utilizará para el cifrado.
TableColumns
Contiene el nombre de la columna de la tabla que almacena valores cifrados. Es posible que varias columnas tengan datos cifrados.
UniqueColumns
Contiene el nombre de la columna de la tabla que almacena valores exclusivos. Varias columnas pueden tener datos exclusivos. La columna UniqueColumns debe ser del tipo de datos Numérico (por ejemplo, Entero) y debe ser la clave primaria de la tabla personalizada.

Si falta alguno de los detalles anteriores en DBUpdate.txt, la utilidad MigrateEncryptedInfo no podrá descifrar ni cifrar los datos correctamente.

HCL Commerce Version 9.1.6.0 or laterNota:

Si los datos de USERREG.CHALLENGEANSWER se establecen en texto sin formato, puede cifrarlo estableciendo la marca MemberSubSystem/challengeAnswerEncrypted en el archivo de configuración de wc-server.xml en true. A continuación, al ejecutar MigrateEncryptedInfo, se cifrará USERREG.CHALLENGEANSWER.

Introducción

El programa de utilidad MigrateEncryptedInfo está en el siguiente directorio:
  • Linuxutilities_root/bin/MigrateEncryptedInfo.sh
  • HCL Commerce DeveloperWCDE_installdir/bin/MigrateEncryptedInfo.bat

Cuando finaliza el programa de utilidad MigrateEncryptedInfo, genera los siguientes archivos de anotaciones cronológicas.

  • CCInfoMigration.log
  • MKChangeUserAndCCInfoMigration.log
  • MigrateEncryptedInfoError.log
  • migrateFailedRecords_TABLENAME.log

en el directorio siguiente:

  • Linuxutilities_root/logs/
  • HCL Commerce DeveloperWCDE_installdir/logs/

Revise la información en estos archivos de registro y asegúrese de que no contienen ningún mensaje de error.

Si el error se ha producido durante el descifrado o cifrado de datos, los registros de datos anómalos relacionados se registran en el archivo de anotaciones cronológicas utilities_root/logs/migrateFailedRecords_TABLENAME.log. TABLENAME es el nombre de la tabla de datos con error. Debe ser una de la tablas USERREG, USERPWDHST, PATTRVALUE, ORDPAYINFO, ORDPAYMTHD, PPCEXTDATA, PPCPAYINST, MERCHCONFINFO, GRUSERAUTH, CSEDITATT e ISEDITATT.

Por ejemplo, si un registro en ORDPAYINFO se descifra con excepción, se registra en el archivo utilities_root/logs/migrateFailedRecords_ORDPAYINFO.log. Si el error se ha producido durante la transacción, como una confirmación de transacción, se registran todos los registros de datos del lote y un lote con errores no afecta a los demás. El número de registros de datos de un lote se configura a través del parámetro commit_count en una línea de mandatos. El valor sugerido es 5000. Una vez que se haya producido el error, identifique y resuelva la causa raíz del error de acuerdo con los mensajes de error y los registros de datos con error. A continuación:
  1. Restaure primero la base de datos y ejecute de nuevo el programa de utilidad.

Antes de empezar

Asegúrese de que los parámetros HostName y HostJDBCPort se han establecido en el archivo de configuración utilities_root/schema/DBTYPE/migration/DBUpdate.txt.

Sintaxis

Diagrama que muestra el programa de utilidad MigrateEncryptedInfo. En la lista siguiente se describen los parámetros.

Valores de parámetros

database_type
Tipo de datos, DB2 o oracle.
instance_name
Un parámetro obligatorio para el nombre de la instancia que se actualiza. Por ejemplo, demo.
num_of_threads
Número de hebras que se crean para volver a cifrar los datos. La recomendación es que este número debe coincidir con el número de procesadores en el servidor que ejecuta el programa de utilidad.
commit_count
El número de registros que se procesan antes de que se comprometa la transacción.  El parámetro commit_count debe establecerse en el número máximo de transacciones que el registro de transacciones de la base de datos permite. Un valor sugerido para este parámetro es 5000.

Si no se recuperan las claves de comerciante de Key Locator Framework, se aceptan los siguientes parámetros:

current_merchant_key
Un parámetro opcional para la clave de comerciante actual, en formato de texto plano (ASCII). Debe especificar este parámetro únicamente si utiliza actualmente una clave de comerciante que no sea el valor predeterminado y en este momento está cambiando a una clave de comerciante nueva. En este caso, también debe especificar el parámetro new_merchant_key. El programa de utilidad detecta si está utilizando la clave predeterminada.
new_merchant_key
Un parámetro necesario en formato de texto plano (ASCII). Si está utilizando una clave de comerciante no predeterminada, este parámetro es opcional. Debe seguir las normas siguientes:
  • Debe utilizarse un carácter hexadecimal 32. Los caracteres pueden ser 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e o f.
  • Debe contener como mínimo un carácter alfabético.
  • Debe contener como mínimo un carácter numérico.
  • Debe estar en minúsculas.
  • No puede contener más de 4 caracteres consecutivos idénticos.

    Por ejemplo, 1a1a1a1a1a1a1a1a2b2b2b2b2b2b2b2b.

Si se recuperan las claves de comerciante de Key Locator Framework, el parámetro aceptado es el siguiente:

-k ubicación_archivo_config_claves
Las claves del comerciante actual y nueva se recuperan de Key Locator Framework utilizando el archivo de configuración especificado. Debe especificarse la vía de acceso absoluta del archivo.
-interactive
Opcional: Cuando se especifica este distintivo, se solicita al administrador la nueva clave del comerciante. Este distintivo se puede utilizar solo en modalidad fuera de línea.

Si desea ejecutar el programa de utilidad MigrateEncryptedInfo sin detener el servidor, no podrá utilizar el parámetro -interactive.

Cambiar el valor de una clave de comerciante en un archivo externo

Si la clave de comerciante se almacena en un archivo externo y desea cambiar el valor, realice estos pasos:

  1. Detenga la instancia de HCL Commerce.
    • Si está ejecutando el mandato MigrateEncryptedInfo para cambiar claves mientras Transaction server está fuera de línea, defina un nuevo archivo de configuración de claves personalizado, CustomKeys.xml, similar al siguiente. Colóquelo en un directorio relativo a una entrada de la vía de acceso de clases de la aplicación HCL Commerce, como por ejemplo, application_dir/WC/xml/config.
      <?xml version="1.0" encoding="UTF-8"?>
      
      <keys xmlns="http://www.ibm.com/xmlns/prod/WebSphereCommerce"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.ibm.com/xmlns/prod/WebSphereCommerce
      xsd/WCKeys.xsd">
      
      <key 
      	name="MerchantKey"
      	providerName="WC"
      	status="current"
      	className="com.ibm.commerce.security.keys.WCExternalFileMerchantKeyImpl">
      
      	<config name="keyFile"
      	value="/opt/WebSphere/AppServer/profiles/default/installedApps/localhost/ts.ear/xml/config/merchantKey.xml"/>
      	<config name="keyEncryptionKeyFile"
      	value="/opt/WebSphere/AppServer/profiles/default/installedApps/localhost/ts.ear/xml/config/KeyEncryptionKey.xml"/>
      </key>
      
      <key 
      	name="MerchantKey" 
      	providerName="WC" 
      	status="new"
      	className="com.ibm.commerce.security.keys.WCExternalFileMerchantKeyImpl">
      	
      	<config name="keyFile"
      	value="/opt/WebSphere/AppServer/profiles/default/installedApps/localhost/ts.ear/xml/config/merchantKey.xml"/>
      	
      	<config name="keyEncryptionKeyFile"
      	value="/opt/WebSphere/AppServer/profiles/default/installedApps/localhost/ts.ear/xml/config/KeyEncryptionKey.xml"/>
      	
      	<config name="newKeyFile1"
      	value="c:/temp/newMerchantKey1.xml"/>
      	
      	<config name="newKeyFile2" 
      	value="c:/temp/newMerchantKey2.xml"/>
      
      </key>
      </keys>

      Consulte el apartado Implementaciones del proveedor de claves para la clave de comerciante para obtener descripciones detalladas de cada parámetro y el formato de los archivos de claves.

    • Si está ejecutando el mandato MigrateEncryptedInfo para migrar el cifrado de 3DES a AES y Transaction server está en línea, HCL Commerce debe tener una forma de diferenciar los datos cifrados con la clave original de los datos cifrados con la nueva clave. Por este motivo, debe especificar un número de versión exclusivo para cada clave utilizando el parámetro versión.

      En esta circunstancia, el programa de utilidad MigrateEncryptedInfo descifra los datos cifrados con la clave ("actual") existente y los vuelve a cifrar con la nueva clave ("nueva").

      Los valores válidos para el algoritmo son 3DES y AES.

      <?xml version="1.0" encoding="UTF-8"?>
      
      <keys xmlns="http://www.ibm.com/xmlns/prod/WebSphereCommerce"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.ibm.com/xmlns/prod/WebSphereCommerce
      xsd/WCKeys.xsd">
      
      <key 
      	name="MerchantKey"
      	providerName="WC"
      	status="current"
      	className="com.ibm.commerce.security.keys.WCExternalFileMerchantKeyImpl"
      	version="2"
      	algorithm="AES">
      	
      	<config name="keyFile"
      	value="/opt/WebSphere/AppServer/profiles/default/installedApps/localhost/ts.ear/xml/config/merchantKey.xml"/>
      	<config name="keyEncryptionKeyFile"
      	value="/opt/WebSphere/AppServer/profiles/default/installedApps/localhost/ts.ear/xml/config/KeyEncryptionKey.xml"/>
      </key>
      
      <key 
      	name="MerchantKey"
      	providerName="WC"
      	status="new"
      	className="com.ibm.commerce.security.keys.WCExternalFileMerchantKeyImpl"
      	version="3"
      	algorithm="AES">
      
      	<config name="keyFile"
      	value="/opt/WebSphere/AppServer/profiles/default/installedApps/localhost/ts.ear/xml/config/merchantKey.xml"/>
      
      	<config name="keyEncryptionKeyFile"
      	value="/opt/WebSphere/AppServer/profiles/default/installedApps/localhost/ts.ear/xml/config/KeyEncryptionKey.xml"/>
      
      	<config name="newKeyFile1" 
      	value="c:/temp/newMerchantKey1.xml"/>
      
      	<config name="newKeyFile2" 
      	value="c:/temp/newMerchantKey2.xml"/>
      </key>
      </keys>
  2. Abra un indicador de mandatos y vaya al siguiente directorio de utilities_root/bin
  3. Ejecute el programa de utilidad, presuponiendo que los datos se almacenan en una base de datos DB2 y que "demo" es el nombre de la instancia:
    • Linux
      MigrateEncryptedInfo db2 demo 4 5000 -k workspace_dir/WC/xml/config/CustomKeys.xml
  4. Ahora que todos los datos cifrados se han cifrado con el valor recuperado del "nuevo" proveedor de claves, WCExternalFileMerchantKeyImpl, edite el archivo de configuración de claves como se indica a continuación:
    • Elimine el proveedor de claves "actual".
    • Cambie el estado del "nuevo" proveedor de claves a "current"
  5. Inicie la instancia de HCL Commerce.
  6. Despliegue los cambios en los archivos XML personalizados en Transaction server Docker container. Por ejemplo, merchantKey.xml, CustomKeys.xml y KeyEncryptionKey.xml.