ThingWorx Flow > ThingWorx Flow 安装和管理 > 管理 ThingWorx Flow > 旋转 ThingWorx Flow 加密密钥
旋转 ThingWorx Flow 加密密钥
敏感数据 (包括连接、授权及工作流操作) 会在 ThingWorx Flow 中加密。可能需要更改用于此操作的加密密钥,而不会丢失使用以前加密数据的能力。以下步骤概述了如何设置新的加密密钥。
内部部署过程
1. 生成新密钥对,例如密钥名称和机密。
密钥名称可以是任何内容。
密钥长度必须是 16 的倍数。最简单的方法是使用 GUID 生成器来创建机密。
* 
GUID 中不得包含连字符 (-)。
在本示例中,密钥为 newkey,值为 0EE0D33AC67E4389AB2B46123729B875
2. 解密 KeyFile。
a. 导航到 flow-installer 目录,然后从 settings.json 文件复制 sec_key。密钥工具稍后会使用此密钥。
b. 导航到 ThingWorxFlow 目录。
c. 通过执行以下命令链接 KeyTool:
cd /d C:\ThingWorxFlow\cryptography\tw-security-common-nodejs
npm link
d. 通过执行以下命令将 KeyFile 解密为临时文件:
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. 在本示例中,将新密钥添加到纯文本文件,例如 keys.dec。RabbitMQ 和 Postgres 的连接信息存储在此文件中。
f. 通过执行以下命令将临时文件加密为 KeyFile:
C:\ThingWorxFlow> PtcOrchKeyFileTool --secret "<value from sec_key>" --keyfile-location "misc\keyfile-key" --plaintext"keys.dec"--encrypted "cryptography\keys.enc" encrypt
g. 删除临时文件 keys.dec
3. 对于每个流服务,使用下列步骤配置加密密钥名称和值:
a. 编辑文件 deploymentConfig.json
b. ACTIVE_ENCRYPTION_KEY 属性设置为新的密钥名称。
例如,假定新的密钥名称为 "newkey",deploymentConfig.json 应包含以下内容:
{
"ACTIVE_ENCRYPTION_KEY": "newkey"
}
4. 重新启动 ThingWorx Flow 服务。
云或虚拟私有云过程
1. 生成新密钥对,例如密钥名称和机密。
密钥名称可以是任何内容。
密钥长度必须是 16 的倍数。最简单的方法是使用 GUID 生成器来创建机密。
* 
GUID 中不得包含连字符 (-)
在本示例中,密钥为 newkey,值为 0EE0D33AC67E4389AB2B46123729B875
2. 找到密钥机密文件。ThingWorx Flow 部署包括密钥机密 (标题为 <版本名称>-密钥)。此机密在 oldEncKeys.json 中存储的 JSON 结构中同时包含活动加密密钥和旧加密密钥。要查找正确的机密,请执行以下命令:
kubectl get secrets
3. 通过执行以下命令打开机密文件进行编辑:
kubectl edit secret <release name>-keys
机密文件包含各种条目,具体包括以下内容:
ENCRYPTION_KEY:QVNERkdISktMMTIzNDU2Nw==
ACTIVE_ENCRYPTION_KEY_NAME:bXlrZXk=
oldEncKeys.json:e30=
4. Base64 可对 ENCRYPTION_KEYACTIVE_ENCRYPTION_KEY_NAMEoldEncKeys.json 条目的当前值进行解码。在本例中,
对于 ENCRYPTION_KEY,值 QVNERkdISktMMTIzNDU2Nw== 解码为 ASDFGHJKL1234567
对于 ACTIVE_ENCRYPTION_KEY_NAME,值 bXlrZXk= 解码为 mykey
对于 oldEncKeys.json,值 e30= 解码为 {}
5. Base64 可对 ENCRYPTION_KEY, ACTIVE_ENCRYPTION_KEY_NAMEoldEncKeys.json 条目的新值进行编码。在本例中,
对于 ENCRYPTION_KEY,值 0EE0D33AC67E4389AB2B46123729B875 编码为 MEVFMEQzM0FDNjdFNDM4OUFCMkI0NjEyMzcyOUI4NzU=
对于 ACTIVE_ENCRYPTION_KEY_NAME,值 newkey 编码为 bmV3a2V5
对于 oldEncKeys.json,JSON 格式的旧密钥对 {"mykey":"ASDFGHJKL1234567"} 编码为 eyAibXlrZXkiOiAiQVNERkdISktMMTIzNDU2NyJ9
6. 输入机密文件的新值,然后保存该文件。
ENCRYPTION_KEY:MEVFMEQzM0FDNjdFNDM4OUFCMkI0NjEyMzcyOUI4NzU=
ACTIVE_ENCRYPTION_KEY_NAME:bmV3a2V5
oldEncKeys.json:eyAibXlrZXkiOiAiQVNERkdISktMMTIzNDU2NyJ9
7. 重新启动所有工作流容器。