針對 AKKA 配置 SSL/TLS
在內部部署環境中針對 AKKA 配置 SSL/TLS
* 
此分散式功能在 ThingWorx 9.4 及更高版本中可用。
欲在內部部署環境中使用 ThingWorx HA 叢集時針對 AKKA 配置 SSL,請執行下列步驟:
1. 建立所有平台都將使用的 keystoretruststore
* 
關鍵字 secret 可替換為自訂密碼。使用此密碼存取已建立的 keystore 和 truststore。
a. 欲建立具有公開金鑰和私人金鑰的 keystore,請在終端執行下列指令:
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. 匯出伺服器憑證。
keytool -v -exportcert -file server.cer -alias server -keystore akka-keystore.jks -storepass secret -rfc
c. 為用戶端建立 truststore,並使用下列指令匯入伺服器憑證:
keytool -v -importcert -file server.cer -alias server -keystore akka-truststore.jks -storepass secret -noprompt
2. 建立包含下列內容的 keystore.conf
{
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 應為 ThingworxPlatform 資料夾的路徑。path 應為 ThingworxStorage 資料夾的路徑。
下列內容與 a、b 和 c 相關。將 keystoretruststore 密碼新增至 ThingWorx 內部 keystore,以保護這些值。
a. 下列子步驟將使用內部 ThingWorx 工具 security-common-cli 將密碼插入 keystore。安裝資料夾中應有 security-common-cli 工具。如需詳細資訊,請造訪說明中心內的安全性管理工具。視需要,使用不同版本的 keystore.conf 指定下列參數,為每個平台重複此流程:password-file-pathpath
b. 使用 security-common-cli 工具,在指令行中執行下列指令 (指定 security-common-tool 的有效路徑)
:
cd [...]\security-common-cli-1.3.6.110\bin
security-common-cli
c. security-common-cli 終端執行下列指令,並將 secret 替換為 keystoretruststore 的自訂密碼。輸入有效的 keystore.conf 路徑。
> init [...]\keystore.conf
> set encrypt.akka.keystore.password "secret"
> set encrypt.akka.truststore.password "secret"
3. akka-keystore.jksakka-truststore.jks 檔案放在已知路徑下。路徑可以是相對或絕對的。例如,相對路徑為 /ThingworxPlatform/[...]/akka-keystore.jks。絕對路徑為 C:/akkaCerts/akka-keystore.jks
* 
只能有一個 akka-keystore.jksakka-truststore.jks 副本。由於已針對叢集中的所有平台建立過一次這些檔案,並針對所有平台使用了相同的檔案,因此需針對各個平台使用相同的副本。
* 
建議將檔案放在 /ThingworxPlatform 資料夾下,並使用相對路徑。
4. 編輯 ThingworxPlatform\platform-settings.json 並在 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"
}
提供有效的 akka-keystore.jksakka-truststore.jks 路徑。
"AkkaSSLEnabled": true,
"AkkaKeyStore":"[...]/akka-keystore.jks",
"AkkaTrustStore":"[...]/akka-truststore.jks",
"AkkaKeyStorePassword":"encrypt.akka.keystore.password",
"AkkaTrustStorePassword":"encrypt.akka.truststore.password"
* 
AkkaTlsProtocolVersion 為選用參數。此參數的預設值為 TLSv1.2,後期可根據需要進行變更。
5. 重新啟動應用程式。
這是否有幫助?