Configurazione di SSL/TLS per AKKA
Configurazione di SSL/TLS per AKKA in un ambiente locale
|
Questa funzionalità distribuita è disponibile a partire da ThingWorx 9.4 e versioni successive.
|
Per configurare SSL per AKKA quando si utilizza il clustering ThingWorx a disponibilità elevata in un ambiente locale, attenersi alla procedura descritta di seguito.
1. Creare un keystore e un truststore, che verranno utilizzati da tutte le piattaforme.
|
La parola chiave secret può essere sostituita da una password personalizzata. Utilizzare questa password per accedere al keystore e al truststore creati.
|
a. Per creare un keystore con una chiave pubblica e privata, eseguire il comando seguente nel terminale:
keytool -v -genkeypair -dname "CN=SEEKERS,OU=RND,O=PTC,C=IL" -keystore akka-keystore.jks -storepass secret -keyalg RSA -keysize 2048 -alias server -validity 3650 -deststoretype pkcs12 -ext KeyUsage=digitalSignature,dataEncipherment,keyEncipherment,keyAgreement -ext ExtendedKeyUsage=serverAuth,clientAuth -ext SubjectAlternativeName:c=DNS:localhost,IP:127.0.0.1
b. Esportare il certificato del server.
keytool -v -exportcert -file server.cer -alias server -keystore akka-keystore.jks -storepass secret -rfc
c. Creare il truststore per il client e importare il certificato del server con il seguente comando:
keytool -v -importcert -file server.cer -alias server -keystore akka-truststore.jks -storepass secret -noprompt
2. Creare un file keystore.conf con il contenuto seguente:
{
security {
secret-provider = "com.thingworx.security.provider.keystore.KeyStoreProvider"
default-encryption-key-length = 128
keystore {
password-file-path = "I:\\ThingworxPlatform"
password-file-name = "keystore-password"
path = "I:\\ThingworxStorage"
name = "keystore"
}
}
}
|
password-file-path deve essere il percorso della cartella ThingworxPlatform. path deve essere il percorso della cartella ThingworxStorage.
|
Le seguenti informazioni sono rilevanti per a, b e c. Aggiungere le password keystore e truststore nel keystore interno ThingWorx per proteggere questi valori.
a. Nei passi secondari seguenti utilizzeremo
security-common-cli, uno strumento ThingWorx interno per l'inserimento dei segreti nel keystore. Lo strumento
security-common-cli deve essere presente nella cartella di installazione. Per ulteriori informazioni, visitare la pagina
Strumento di gestione della protezione nell'Help Center. Ripetere questo processo per ogni piattaforma, se necessario, con versioni diverse del file keystore.conf specificando i seguenti parametri:
password-file-path e
path.
b. Utilizzando lo strumento security-common-cli, dalla riga di comando, eseguire il comando seguente (specificare il percorso valido di security-common-tool)
:
cd [...]\security-common-cli-1.3.6.110\bin
security-common-cli
c. Dal terminale security-common-cli, eseguire i comandi seguenti e sostituire secret con le password personalizzate per il keystore e il truststore. Immettere il percorso valido del file keystore.conf.
> init [...]\keystore.conf
> set encrypt.akka.keystore.password "secret"
> set encrypt.akka.truststore.password "secret"
3. Spostare i file akka-keystore.jks e akka-truststore.jks in un percorso noto. Il percorso può essere relativo o assoluto. Ad esempio, un percorso relativo potrebbe essere /ThingworxPlatform/[...] /akka-keystore.jks. Un esempio di percorso assoluto potrebbe essere C:/akkaCerts/akka-keystore.jks.
|
È necessario disporre di una sola copia di akka-keystore.jks e akka-truststore.jks. Poiché questi file vengono creati una sola volta per tutte le piattaforme nel cluster e in tutte le piattaforme si usano gli stessi file, è necessario utilizzare le stesse copie per ogni piattaforma.
|
|
È consigliabile spostare i file nella cartella/ThingworxPlatform e utilizzare un percorso relativo.
|
4. Modificare ThingworxPlatform\platform-settings.json e aggiungere i parametri seguenti nella sezione ClusteredModeSettings:
"ClusteredModeSettings": {
"CoordinatorConnectionTimeout": 10000,
"CoordinatorHosts": "localhost:2181",
"CoordinatorMaxRetries": 3,
"CoordinatorRetryTimeout": 3000,
"CoordinatorSessionTimeout": 90000,
"LoadBalancerBase64EncodedCredentials": "QWRtaW5pc3RyYXRvcjp0clVmNnl1ejI/X0d1Yg==",
"PlatformId": "platform1",
"ZKNamespace": "",
"MetricsCacheFrequency": "60000",
"ModelSyncPollInterval": "100",
"ModelSyncTimeout": "120000",
"ModelSyncMaxDBUnavailableErrors": "10",
"ModelSyncMaxCacheUnavailableErrors": "10",
"IgnoreInactiveInterfaces": true,
"IgnoreVirtualInterfaces": true,
"HostAddressFilter": "",
"AkkaSSLEnabled": true,
"AkkaKeyStore":"C:/tempcerts/akka-keystore.jks",
"AkkaTrustStore":"C:/tempcerts/akka-keystore.jks",
"AkkaKeyStorePassword":"encrypt.akka.keystore.password",
"AkkaTrustStorePassword":"encrypt.akka.truststore.password"
}
Specificare i file akka-keystore.jks e akka-truststore.jks validi.
"AkkaSSLEnabled": true,
"AkkaKeyStore":"[...]/akka-keystore.jks",
"AkkaTrustStore":"[...]/akka-truststore.jks",
"AkkaKeyStorePassword":"encrypt.akka.keystore.password",
"AkkaTrustStorePassword":"encrypt.akka.truststore.password"
|
AkkaTlsProtocolVersion è un parametro facoltativo. Il valore di default di questo parametro è TLSv1.2 che, se necessario, può essere modificato in futuro.
|
5. Riavviare l'applicazione.