ThingWorx Flow > 安装和配置 > 配置 ThingWorx Flow > 旋转 ThingWorx Flow 加密密钥
旋转 ThingWorx Flow 加密密钥
敏感数据 (包括授权及工作流操作) 会在 ThingWorx Flow 中加密。您可以更改用于加密敏感数据的加密密钥,而不丢失以前加密的数据。以下各部分提供了有关在下列环境中设置新加密密钥的信息:
本地部署
1. 生成新密钥对,其中包含密钥名称和机密。
您可以将密钥名称设置为任何内容。
机密长度必须是 16 的倍数。可以使用 GUID 生成器来创建机密。GUID 中不得包含连字符 (-)。
2. secret 参数的值可用于解密 keyfile-key。要获取 secret 参数的值,请以管理员身份在安装 ThingWorx Flow 的计算机上启动命令提示符,然后运行以下命令:
a. pm2 ls
请记下任何 ThingWorx Flow 服务的 ID 值。
b. pm2 env <id>
,其中 <id> 为任何 ThingWorx Flow 服务的 ID。例如:flow-api 服务的 ID。
c. 复制 CONFIG_IMAGE 变量的值。此为 secret 参数的值。您需要在步骤 3 中提供 secret 参数的值。
3. 运行以下命令以解密密钥文件。
a. 导航至 <ThingWorx_Flow_Install_Location>
b. 运行下列命令:
cd <ThingWorx_Flow_Install_Location>\cryptography\tw-security-common-nodejs
Windows:npm link,或 Linux:sudo npm link
c. 运行以下命令以解密临时文件的 keyfile-key
PtcOrchKeyFileTool --secret <CONFIG_IMAGE value> --keyfile-location <ThingWorx_Flow_Install_Location>\misc\keyfile-key --plaintext <ThingWorx_Flow_Install_Location>\cryptography\keys.dec --encrypted <ThingWorx_Flow_Install_Location>\cryptography\keys.enc decrypt
此命令会在 <ThingWorx_Flow_Install_Location>\cryptography\ 文件夹下创建新的解密 keys.dec 文件。
d. 更新 keys.dec 文件以添加新密钥。
例如:"newkey": "0EE0D33AC67E4389AB2B46123729B875",
e. <ThingWorx_Flow_Install_Location>\cryptography\keys.enc 文件进行备份。
f. 删除 <ThingWorx_Flow_Install_Location>\cryptography\keys.enc 文件。
g. 运行以下命令来创建新的加密 keys.enc 文件:
PtcOrchKeyFileTool --secret <CONFIG_IMAGE value> --keyfile-location <ThingWorx_Flow_Install_Location>\misc\keyfile-key --plaintext <ThingWorx_Flow_Install_Location>\cryptography\keys.dec --encrypted <ThingWorx_Flow_Install_Location>\cryptography\keys.enc encrypt
h. 删除已解密的 keys.dec 文件。
4. 在下列文件中,将 activeKeyName 属性的值设置为新的密钥名称,以配置新的加密密钥:
<ThingWorx_Flow_Install_Location>\modules\engine\config\security-common\config.json
<ThingWorx_Flow_Install_Location>\modules\exchange\config\security-common\config.json
<ThingWorx_Flow_Install_Location>\modules\lookup\config\security-common\config.json
<ThingWorx_Flow_Install_Location>\modules\oauth\config\security-common\config.json
<ThingWorx_Flow_Install_Location>\modules\trigger\config\security-common\config.json
<ThingWorx_Flow_Install_Location>\modules\ux\config\security-common\config.json
例如,对于密钥名称 newkey,请设置以下内容:
{"
activeKeyName": "newkey"
}
5. 重新启动 ThingWorx Flow 服务。
云或虚拟私有云
1. 生成新密钥对,其中包含密钥名称和机密。
您可以将密钥名称设置为任何内容。
机密长度必须是 16 的倍数。可以使用 GUID 生成器来创建机密。GUID 中不得包含连字符 (-)。
2. ThingWorx Flow 部署中包含一个名为 <版本名称>-keys 的密钥-机密文件。此密钥-机密文件包含活动的加密密钥和以 JSON 格式存储在 oldEncKeys.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. 重新启动所有 ThingWorx Flow 容器。
这对您有帮助吗?