Migración de datos cifrados

Al migrar IBM Websphere Commerce Version 8 a HCL Commerce Version 9.1 debe migrar los datos cifrados. Las versiones anteriores de WebSphere Commerce permiten que el sitio utilice el cifrado 3DES (merchantKey de 16 bits) o AES (merchantKey de 32 bits). En HCL Commerce Version 9.1, solo se utiliza el cifrado AES.

Antes de empezar

Actívese o inicie sesión en el entorno necesario.
    1. Inicie sesión en el entorno que aloja Utility server Docker container.

      Si Utility server Docker container no se ha implementado, consulte Preparar un servidor de host de Docker para iniciar Utility server Docker container.

    2. Introduzca el Utility server Docker container.
      Por ejemplo,
      docker exec -it utility_container_name bash

      Ahora está dentro de Utility server Docker container. Los pasos siguientes deben realizarse en este entorno.

Procedimiento

  1. Cree los archivos necesarios para migrar los datos cifrados.
    1. Cree Product.xml.
      Product.xml se utiliza para especificar qué tipo de cifrado se utiliza tanto en la base de datos como en los archivos del entorno de IBM Websphere Commerce Version 8.
      <security>
        <AES_Files>true</AES_Files>
        <AES_DB>false</AES_DB>
      </security>

      En este ejemplo, AES se especifica como utilizado para archivos, pero no para la base de datos. Por lo tanto, se presupone el algoritmo de cifrado predeterminado para la base de datos (3DES).

      Nota: Después de ejecutar la utilidad migrateEncryptedInfo en la base de datos, ambos deben establecerse en true.
    2. Actualice el archivo de configuración HCL Commerce (wc-server.xml).
      Asegúrese de que esta información está especificada en el archivo de configuración de wc-server.xml.
      AES_DB="false"
      AES_Files="true"
      Nota: Después de ejecutar la utilidad migrateEncryptedInfo en su base de datos:
      • Tanto AES_DB como AES_Files deben establecerse en true.
      • Dentro del elemento <Database>, actualice DBUserPwd al valor cifrado de AES utilizando la utilidad wcs_encrypt.sh.
        wcs_encrypt.sh password
      • Para obtener más información sobre el archivo de configuración de wc-server.xml, consulte HCL Commerce archivo de configuración (wc-server.xml).
    3. Opcional: cree KeyEncryptionKey.xml.

      keyEncryptionKey añade un nivel adicional de seguridad al cifrar merchantKey. El valor que contiene es una cadena de 32 caracteres.

      El valor keyEncryptionKey puede ser cualquier combinación de los siguientes caracteres alfanuméricos: abcdef0123456789.

      Por ejemplo: abcdef0123456789abcdef0123456789.

  2. Configure la migración del cifrado de datos.
    Cree CustomKeys.xml. Este archivo se utiliza para proporcionar a la utilidad MigrateEncryptedInfo las instrucciones sobre de y a dónde migrar datos.

    Coloque este archivo en la ubicación siguiente: /opt/WebSphere/AppServer/profiles/default/installedApps/localhost/ts.ear/xml/config/CustomKeys.xml.

    Los archivos de configuración de ejemplo son de la manera siguiente:
    <?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" algorithm="3DES">
    	<config name="keyFile" value="oldMerchantKey.xml"/>
        </key>
    
        <key name="MerchantKey" providerName="WC" status="new"
         className="com.ibm.commerce.security.keys.WCExternalFileMerchantKeyImpl" algorithm="AES">
    	<config name="keyFile" value="merchantKey.xml"/>
    	<config name="keyEncryptionKeyFile" value="KeyEncryptionKey.xml"/>
    	<config name="newKeyFile1" value="newMerchantKey1.xml"/>
    	<config name="newKeyFile2" value="newMerchantKey2.xml"/>
         </key>
    		
         <key name="SessionKey" providerName="WC" status="current"
    	className="com.ibm.commerce.security.keys.WCSessionKeyImpl">
         </key>
      </keys>
    En el customKeys.xml hay tres elementos <key>:
    1. La primera clave designa la MerchantKey con la que los datos están cifrados actualmente. Esta es su clave actual y se especifica en este archivo de configuración con el valor de estado de current.

      Esto lo utiliza la utilidad para determinar cómo están cifrados actualmente los datos y qué utilizar para descifrar los datos para la transición a una nueva clave y/o algoritmo de cifrado.

      Esta clave quedará obsoleta una vez que la utilidad se ejecute satisfactoriamente y se pueda suprimir.

    2. La segunda clave designa la MerchantKey que desea utilizar con el sitio en el futuro. Esto se conoce como la nueva clave y se indica en este archivo de configuración con el valor new de estado.

      Esta es la clave que está pasando a utilizar. La utiliza la utilidad para volver a cifrar los datos descifrados por la clave original (actualmente current).

      Una vez que se ejecuta la utilidad, esta clave es ahora la clave actual. Ocupará el lugar de la clave actual original (el primer valor de clave que se especifica en el archivo de configuración, con un estado de current) para cualquier migración de claves o algoritmo de cifrado futuro.

    3. La tercera clave indica sessionKey y no es importante para la utilidad MigrateEncryptedInfo.

    Para especificar la configuración de la utilidad, actualice este archivo como corresponda:

    1. Especifique el algoritmo utilizado por la clave actual y la clave nueva.
      Esto se consigue especificando el elemento de algoritmo para cada clave en 3DES o AES en consecuencia.
    2. Especifique la clave actual (oldMerchantKey.xml).
      En el ejemplo anterior, la clave actual se especifica como contenida en oldMerchantKey.xml. Este archivo contendrá el valor merchantKey de la instalación de IBM Websphere Commerce Version 8.

      Se encuentra contenido en la versión IBM Websphere Commerce Version 8 de wc-server.xml.

      Debe especificarlo en este archivo cifrado por AES. Para cifrar este valor con AES, utilice la utilidad wcs_encrypt.sh.
      wcs_encrypt.sh password

      La cadena cifrada AES generada es el valor que debe introducirse en oldMerchantKey.xml.

      Por ejemplo, si su merchantKey no cifrada es abcdef0123456789, la utilidad generará el valor de cadena cifrada AES de 000ITx0jBS3xHdvCq2EJXzDhtd9o3cRAEo/5eoVZy9vl+O2yV1SDG/iSURev3mc.

      A continuación, este valor se coloca dentro de oldMerchantKey.xml.
      <?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/key.xsd">
          <key value="000ITx0jBS3xHdvCq2EJXzDhtd9o3cRAEo/5eoVZy+9vl+O2yV1SDG/iSURev3mc"/>
        </keys>
    3. Especifique la nueva clave (newMerchantKey1.xml / newMerchantKey2.xml).
      Ambos archivos contendrán 16 bits del nuevo valor merchantKey no cifrado de 32 bits. El significado newMerchantKey1.xml contendrá los 16 primeros y newMerchantKey2.xml contendrá los 16 caracteres segundos.

      Cada valor de clave puede ser cualquier combinación de los siguientes caracteres alfanuméricos: abcdef0123456789.

      Coloque estos archivos de claves en la ubicación siguiente:
      • /opt/WebSphere/AppServer/profiles/default/installedApps/localhost/ts.ear/xml/config/newMerchantKey1.xml
      • /opt/WebSphere/AppServer/profiles/default/installedApps/localhost/ts.ear/xml/config/newMerchantKey2.xml
        Un archivo de claves de ejemplo es el siguiente:
        <?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/key.xsd">
             <key value="abcdef0123456789"/>
        </keys>
        Nota: Tanto newMerchantKey1.xml como newMerchantKey2.xml se suprimen al ejecutar la utilidad migrateEncryptedInfo. Si usted experimenta un error o si necesita volver a ejecutar migrateEncryptedInfo, entonces estos archivos se deben volver a crear.
  3. Complete la migración del cifrado de datos.
    Migre el cifrado de datos utilizando la utilidad migrateEncryptedInfo.
    Nota: Si ya ha ejecutado la utilidad migrateEncryptedInfo, debe borrar el valor merchantKey existente antes de volver a ejecutar la utilidad migrateEncryptedInfo.
    Un ejemplo de ejecución satisfactoria de esta utilidad es el siguiente:
    [root@utils /]# /opt/WebSphere/CommerceServer90/bin/MigrateEncryptedInfo.sh db2 demo 1 1 -k /opt/WebSphere/AppServer/profiles/default/installedApps/localhost/ts.ear/xml/config/CustomKeys.xml
    
    Migration completed. Please check /opt/WebSphere/CommerceServer90/logs/MigrateEncryptedInfoError.log for any errors. Some errors can be ignored; see documentation for details.

    La utilidad migrateEncryptedInfo genera un archivo de claves de comerciante recién cifrado, merchantKey.xml.

  4. Asegúrese de que la migración del cifrado de datos se ha completado satisfactoriamente.
    Compruebe los archivos de registro MigrateEncryptedInfoError.log y CCInfoMigration.log para determinar si la utilidad ha encontrado errores.
  5. Actualice la instalación de HCL Commerce Version 9.1 para utilizar el cifrado AES.
    1. Actualice wc-server.xml Establezca AES_DB="true".
    2. Actualice product.xml Establezca <AES_DB>true<AES_DB/>.
    3. Haga que la clave de comerciante sea accesible para el entorno.
      • Si utiliza el KLF (Key Locator Framework):
        1. Actualice la configuración del sitio.
          1. Abra el archivo de configuración de wc-server.xml para su edición.
          2. Añada lo siguiente en la sección <Instance>:
            KeysConfigFile = "config/CustomKeys.xml"
          3. Guarde y cierre el archivo.
        2. Defina CustomKeys.xml del modo siguiente:
          <?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" algorithm="AES">
                 <config name="keyFile" value="merchantKey.xml"/>
                 <config name="keyEncryptionKeyFile" value="KeyEncryptionKey.xml"/> 
               </key>
          		
               <key name="SessionKey" providerName="WC" status="current" className="com.ibm.commerce.security.keys.WCSessionKeyImpl">
               </key>
            </keys>
          Nota: Utilice solo keyEncryptionKeyFile si ha vuelto a cifrar su merchantKey utilizando este archivo.
      • Si no utiliza KLF (Key Locator Framework):
        1. Obtenga la nueva clave de comerciante cifrada del archivo merchantKey.xml generado.
          • Si utiliza Vault, almacene este valor.
          • Si no utiliza Vault, actualice el valor de merchantKey wc-server.xml con este valor.
    4. Implemente wc-server.xml, CustomKeys.xml, merchantKey.xml y KeyEncryptionKey.xml en su Transaction server (ts-app).
    5. Si su Transaction server está en ejecución, reinicie la aplicación.

Resultados

El cifrado de datos se migra del algoritmo de cifrado antiguo y de la clave de comerciante al algoritmo de cifrado y la clave de comerciante que acaba de especificar.