ThingWorx Flow > Installazione e amministrazione di ThingWorx Flow > Amministrazione di ThingWorx Flow > Rotazione della chiave di crittografia di ThingWorx Flow
Rotazione della chiave di crittografia di ThingWorx Flow
In ThingWorx Flow, i dati sensibili, quali connessioni, autorizzazioni e azioni dei workflow, vengono crittografati. A questo scopo può essere necessario modificare la chiave di crittografia utilizzata senza perdere la possibilità di usare i dati crittografati in precedenza. Di seguito viene illustrato come impostare una nuova chiave di crittografia.
Procedura di distribuzione in locale
1. Generare una nuova coppia di chiavi, ad esempio nome della chiave e segreto.
Il nome della chiave può essere qualsiasi cosa.
La lunghezza del segreto deve essere un multiplo di 16. Per creare il segreto, il metodo più semplice consiste nell'utilizzare un generatore GUID.
* 
Il GUID non deve contenere trattini (-).
Per questo esempio, la chiave è newkey e il valore è 0EE0D33AC67E4389AB2B46123729B875.
2. Decrittografare il file di chiave.
a. Passare alla directory flow-installer, quindi copiare sec_key dal file settings.json. Viene successivamente utilizzato dallo strumento per le chiavi.
b. Selezionare la directory ThingWorxFlow.
c. Collegare lo strumento per le chiavi eseguendo il comando seguente:
cd /d C:\ThingWorxFlow\cryptography\tw-security-common-nodejs
npm link
d. Decrittografare il file di chiave in un file temporaneo eseguendo i comandi seguenti:
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. Aggiungere una nuova chiave nel file di testo normale, in questo esempio keys.dec. Le informazioni di connessione per RabbitMQ e Postgres vengono memorizzate in questo file.
f. Crittografare il file temporaneo nel file di chiave eseguendo il comando seguente:
C:\ThingWorxFlow> PtcOrchKeyFileTool --secret "<value from sec_key>" --keyfile-location "misc\keyfile-key" --plaintext"keys.dec"--encrypted "cryptography\keys.enc" encrypt
g. Eliminare il file temporaneo keys.dec.
3. Per ogni servizio di Flow, configurare il nome e il valore della chiave di crittografia attenendosi alla procedura descritta di seguito.
a. Modificare il file deploymentConfig.json.
b. Impostare la proprietà ACTIVE_ENCRYPTION_KEY sul nuovo nome della chiave.
Se il nuovo nome della chiave è "newkey", ad esempio, deploymentConfig.json deve contenere quanto segue:
{
"ACTIVE_ENCRYPTION_KEY": "newkey"
}
4. Riavviare i servizi di ThingWorx Flow.
Cloud o procedura cloud privato virtuale
1. Generare una nuova coppia di chiavi, ad esempio nome della chiave e segreto.
Il nome della chiave può essere qualsiasi cosa.
La lunghezza del segreto deve essere un multiplo di 16. Per creare il segreto, il metodo più semplice consiste nell'utilizzare un generatore GUID.
* 
Il GUID non deve contenere trattini (-)
Per questo esempio, la chiave è newkey e il valore è 0EE0D33AC67E4389AB2B46123729B875.
2. Trovare il file del segreto della chiave. La distribuzione di ThingWorx Flow comprende un segreto della chiave (denominato <nome release>-keys). Il segreto contiene sia la chiave di crittografia attiva sia le chiavi di crittografia precedenti, in una struttura JSON memorizzata in oldEncKeys.json. Per trovare il segreto corretto, eseguire il comando seguente:
kubectl get secrets
3. Aprire il file del segreto per la modifica eseguendo il comando seguente:
kubectl edit secret <release name>-keys
Il file del segreto contiene varie voci che includono quanto segue:
ENCRYPTION_KEY:QVNERkdISktMMTIzNDU2Nw==
ACTIVE_ENCRYPTION_KEY_NAME:bXlrZXk=
oldEncKeys.json:e30=
4. base64 decodifica i valori correnti delle voci ENCRYPTION_KEY, ACTIVE_ENCRYPTION_KEY_NAME e oldEncKeys.json. In questo esempio:
Per ENCRYPTION_KEY, il valore QVNERkdISktMMTIzNDU2Nw== viene decodificato in ASDFGHJKL1234567
Per ACTIVE_ENCRYPTION_KEY_NAME, il valore bXlrZXk= viene decodificato in mykey
Per oldEncKeys.json, il valore e30= viene decodificato in {}
5. base64 codifica i nuovi valori per le voci ENCRYPTION_KEY, ACTIVE_ENCRYPTION_KEY_NAME e oldEncKeys.json. In questo esempio:
Per ENCRYPTION_KEY, il valore 0EE0D33AC67E4389AB2B46123729B875 viene codificato in MEVFMEQzM0FDNjdFNDM4OUFCMkI0NjEyMzcyOUI4NzU=
Per ACTIVE_ENCRYPTION_KEY_NAME, il valore newkey viene codificato in bmV3a2V5.
Per oldEncKeys.json la coppia di chiavi precedente nel formato JSON {"mykey":"ASDFGHJKL1234567"} viene codificata in eyAibXlrZXkiOiAiQVNERkdISktMMTIzNDU2NyJ9
6. Immettere i nuovi valori nel file del segreto, quindi salvare il file.
ENCRYPTION_KEY:MEVFMEQzM0FDNjdFNDM4OUFCMkI0NjEyMzcyOUI4NzU=
ACTIVE_ENCRYPTION_KEY_NAME:bmV3a2V5
oldEncKeys.json:eyAibXlrZXkiOiAiQVNERkdISktMMTIzNDU2NyJ9
7. Riavviare tutti i contenitori del flusso.