ThingWorx Flow > Instalación y administración de ThingWorx Flow > Administración de ThingWorx Flow > Rotación de clave de codificación de ThingWorx Flow
Rotación de clave de codificación de ThingWorx Flow
Los datos confidenciales que incluyen las conexiones, las autorizaciones y las acciones de flujo de trabajo se cifran en ThingWorx Flow. Puede surgir la necesidad de cambiar la clave de codificación utilizada, para hacerlo sin perder la posibilidad de utilizar los datos codificados anteriormente. En los siguientes pasos se describe cómo definir una nueva clave de codificación.
Procedimiento de implementación local
1. Genere un nuevo par de claves, como el nombre de clave y el secreto.
El nombre de clave puede ser cualquiera.
La longitud del secreto debe ser un múltiplo de 16. El método más simple es utilizar un generador de GUID para crear el secreto.
* 
El GUID no debe contener guiones (-).
Para este ejemplo, la clave es newkey y el valor es 0EE0D33AC67E4389AB2B46123729B875
2. Descifre KeyFile.
a. Navegue hasta el directorio flow-installer y, a continuación, copie sec_key del fichero settings.json. La herramienta de claves lo utiliza más adelante.
b. Navegue hasta el directorio ThingWorxFlow.
c. Ejecute el siguiente comando para vincular KeyTool:
cd /d C:\ThingWorxFlow\cryptography\tw-security-common-nodejs
npm link
d. Ejecute los siguientes comandos para descifrar KeyFile en un fichero temporal:
cd /d C:\ThingWorxFlow
C:\ThingWorxFlow> PtcOrchKeyFileTool --secret "<value from sec_key>" --keyfile-location "misc\keyfile-key" --plaintext "keys.dec" --encrypted "cryptography\keys.enc" decrypt
e. Añada una nueva clave al fichero de texto sin formato como keys.dec en este ejemplo. La información de conexión para RabbitMQ y Postgres se almacena en este fichero.
f. Ejecute el siguiente comando para cifrar el fichero temporal en KeyFile:
C:\ThingWorxFlow> PtcOrchKeyFileTool --secret "<value from sec_key>" --keyfile-location "misc\keyfile-key" --plaintext"keys.dec"--encrypted "cryptography\keys.enc" encrypt
g. Borre el fichero temporal keys.dec.
3. Para cada servicio de Flow, configure el nombre de clave de codificación y valor mediante los siguientes pasos:
a. Edite el fichero deploymentConfig.json.
b. Defina la propiedad ACTIVE_ENCRYPTION_KEY en el nuevo nombre de clave.
Por ejemplo, si se supone que el nombre de la nueva clave es "newkey", deploymentConfig.json debe contener lo siguiente:
{
"ACTIVE_ENCRYPTION_KEY": "newkey"
}
4. Reinicie los servicios de ThingWorx Flow.
Procedimiento de nube o de nube privada virtual
1. Genere un nuevo par de claves, como el nombre de clave y el secreto.
El nombre de clave puede ser cualquiera.
La longitud del secreto debe ser un múltiplo de 16. El método más simple es utilizar un generador de GUID para crear el secreto.
* 
El GUID no debe contener guiones (-).
Para este ejemplo, la clave es newkey y el valor es 0EE0D33AC67E4389AB2B46123729B875
2. Busque el fichero de secreto de clave. En la implementación de ThingWorx Flow se incluye un secreto de clave (titulado <nombre de versión>-keys). Este secreto contiene la clave de codificación activa y las claves de codificación anteriores en una estructura JSON almacenada en oldEncKeys.json. Para buscar el secreto correcto, ejecute el siguiente comando:
kubectl get secrets
3. Abra el fichero de secreto para la edición, mediante la ejecución del siguiente comando:
kubectl edit secret <release name>-keys
El fichero de secreto contiene varias entradas, que incluyen las siguientes:
ENCRYPTION_KEY:QVNERkdISktMMTIzNDU2Nw==
ACTIVE_ENCRYPTION_KEY_NAME:bXlrZXk=
oldEncKeys.json:e30=
4. Base64 descodifica los valores actuales de las entradas ENCRYPTION_KEY, ACTIVE_ENCRYPTION_KEY_NAME y oldEncKeys.json. En este ejemplo,
Para ENCRYPTION_KEY, el valor QVNERkdISktMMTIzNDU2Nw== se descodifica en ASDFGHJKL1234567.
Para ACTIVE_ENCRYPTION_KEY_NAME, el valor bXlrZXk= se descodifica en mykey.
Para oldEncKeys.json, el valor e30= se descodifica en {}.
5. Base64 codifica los nuevos valores de las entradas ENCRYPTION_KEY, ACTIVE_ENCRYPTION_KEY_NAME y oldEncKeys.json. En este ejemplo,
Para ENCRYPTION_KEY, el valor 0EE0D33AC67E4389AB2B46123729B875 se codifica en MEVFMEQzM0FDNjdFNDM4OUFCMkI0NjEyMzcyOUI4NzU=.
Para ACTIVE_ENCRYPTION_KEY_NAME, el valor newkey se codifica en bmV3a2V5.
Para oldEncKeys.json el par de claves anterior en formato JSON {"mykey":"ASDFGHJKL1234567"} se codifica en eyAibXlrZXkiOiAiQVNERkdISktMMTIzNDU2NyJ9.
6. Introduzca los valores nuevos en el fichero de secreto y, a continuación, guarde el fichero.
ENCRYPTION_KEY:MEVFMEQzM0FDNjdFNDM4OUFCMkI0NjEyMzcyOUI4NzU=
ACTIVE_ENCRYPTION_KEY_NAME:bmV3a2V5
oldEncKeys.json:eyAibXlrZXkiOiAiQVNERkdISktMMTIzNDU2NyJ9
7. Reinicie todos los contenedores de Flow.