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 的金鑰-密碼檔案。此金鑰-密碼檔案包含使用中的加密金鑰,以及儲存在 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. 重新啟動所有 ThingWorx Flow 容器。
這是否有幫助?