ThingWorx Flow > ThingWorx Flow 安裝與管理 > 管理 ThingWorx Flow > 旋轉 ThingWorx Flow 加密金鑰
旋轉 ThingWorx Flow 加密金鑰
包括連線、授權及工作流程動作在內的敏感資料在 ThingWorx Flow 中會做加密處理。可能需要變更用來執行此操作的加密金鑰,而不失去使用先前加密資料能力。下列步驟概述如何設定新加密金鑰。
內部部署程序
1. 產生新金鑰對,例如金鑰名稱與密碼。
金鑰名稱可以是任何內容。
密碼長度必須為 16 的倍數。最簡單的方法是使用 GUID 產生器來建立密碼。
* 
GUID 不得包含連字號 (-)。
對於此範例而言,金鑰為 newkey,值為 0EE0D33AC67E4389AB2B46123729B875
2. 解密金鑰檔案。
a. 導覽至 flow-installer 目錄,然後從 settings.json 檔案複製 sec_key。金鑰工具稍後會用到它。
b. 導覽至 ThingWorxFlow 目錄。
c. 執行下列指令來連結金鑰工具:
cd /d C:\ThingWorxFlow\cryptography\tw-security-common-nodejs
npm link
d. 執行下列指令,將金鑰檔案解密到暫存檔:
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. 執行下列指令來將暫存檔加密到金鑰檔案:
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 部署包括金鑰密碼 (標題為 <release name>-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. 重新啟動所有 Flow 容器。