節點間 (或節點對節點) 加密功能可確保資料在叢集中的節點之間傳輸資料安全無虞 也就是使用 TLS 加密本頁面說明如何在 Edge 上使用 TLS 啟用 Cassandra 節點間加密, 私有雲。如要執行這些步驟,您必須熟悉 Cassandra 的詳細資料 鈴聲。
啟用 Cassandra 節點間加密
如要啟用 Cassandra 節點間加密功能,請在
物件您必須將每個節點的公開憑證發布至所有節點。
完成後,每個節點就會包含憑證
其信任存放區中的 node0.cer
、node1.cer
等。每個節點
包含自己的私密金鑰
KeyStore。舉例來說,node0
只會包含 node0.pem
KeyStore。您必須為各個節點啟用加密功能,一次一個節點。
如要啟用 Cassandra 節點間加密,請按照下列步驟操作:
按照附錄中的步驟產生伺服器憑證 建立自行簽署的金鑰 和憑證
下列步驟假設您已建立
keystore.node0
和truststore.node0
, 以及 KeyStore 和信任儲存庫密碼,詳情請參閱附錄。 在繼續操作之前,您應在每個節點上以初步步驟建立 KeyStore 和信任儲存庫 說明後續步驟- 在
/opt/apigee/customer/application/cassandra.properties
中加入下列屬性 檔案。如果檔案不存在,請建立一個。conf_cassandra_internode_encryption=all conf_cassandra_keystore=/opt/apigee/data/apigee-cassandra/keystore.node0 conf_cassandra_keystore_password=keypass conf_cassandra_truststore=/opt/apigee/data/apigee-cassandra/truststore.node0 conf_cassandra_truststore_password=trustpass # Optionally set the following to enable 2-way TLS or mutual TLS # conf_cassandra_require_client_auth=true
- 確認 API 使用者擁有
cassandra.properties
檔案:chown apigee:apigee \ /opt/apigee/customer/application/cassandra.properties
在每個 Cassandra 節點上執行下列步驟 (一次執行一個步驟),讓變更生效 而不會對使用者造成任何停機時間:
- 停止 Cassandra 服務:
/opt/apigee/apigee-service/bin/apigee-service \ apigee-cassandra stop
- 重新啟動 Cassandra 服務:
/opt/apigee/apigee-service/bin/apigee-service \ apigee-cassandra start
- 如要判斷 TLS 加密服務是否已啟動,請在系統記錄中查看以下訊息:
Starting Encrypted Messaging Service on TLS port
執行憑證輪替
如要輪替憑證,請按照下列步驟操作:
- 為每個產生的不重複金鑰組新增憑證 (請參閱附錄)
現有 Cassandra
節點的信任存放區,以使舊憑證和新憑證均位於相同的
信任儲存庫:
keytool -import -v -trustcacerts -alias NEW_ALIAS \ -file CERT -keystore EXISTING_TRUSTSTORE
其中
NEW_ALIAS
是用來識別項目的不重複字串,CERT
則是 憑證名稱 要新增的檔案,以及EXISTING_TRUSTSTORE
是 Cassandra 節點上現有信任存放區的名稱。 - 使用複製公用程式 (例如 scp),將信任儲存庫發布至叢集中的所有 Cassandra 節點 取代每個節點使用的現有信任存放區
- 執行叢集滾動式重新啟動,載入新的信任存放區並建立
並安裝新的金鑰:
/opt/apigee/apigee-service/bin/apigee-service \ apigee-cassandra restart
- 在叢集中的每個 Cassandra 節點上,將下方顯示的屬性更新為新的 KeyStore
位於 cassandra.properties 檔案中:
conf_cassandra_keystore=NEW_KEYSTORE_PATH conf_cassandra_keystore_password=NEW_KEYSTORE_PASSOWRD
where
NEW_KEYSTORE_PATH
is the path to the directory where the keystore file is located andNEW_KEYSTORE_PASSWORD
is the keystore password set when the certificates were created, as explained in the Appendix. - Stop the Cassandra service:
/opt/apigee/apigee-service/bin/apigee-service \ apigee-cassandra stop
- 重新啟動 Cassandra 服務:
/opt/apigee/apigee-service/bin/apigee-service \ apigee-cassandra start
- 成功在所有節點之間建立通訊後,請前往 Cassandra 節點注意:只有在通訊成功時,才能繼續前往下一個節點 各個節點間建立的關係
附錄
以下範例說明如何準備伺服器憑證以執行 節點間加密步驟範例中顯示的指令使用下列參數:
參數 | 說明 |
---|---|
node0 |
用來識別節點的任何不重複字串。 |
keystore.node0 |
KeyStore 名稱。這些指令會假設這個檔案位於目前的目錄中。 |
keypass |
KeyStore 和金鑰的金鑰組必須相同。 |
dname |
將 node0 的 IP 位址識別為 10.128.0.39 。 |
-validity |
針對這個標記設定的值,產生的金鑰組在 10 年內有效。 |
- 前往以下目錄:
cd /opt/apigee/data/apigee-cassandra
- 執行下列指令,在目前的目錄中產生名為
keystore.node0
的檔案:keytool -genkey -keyalg RSA -alias node0 -validity 3650 \ -keystore keystore.node0 -storepass keypass \ -keypass keypass -dname "CN=10.128.0.39, OU=None, \ O=None, L=None, C=None"
重要事項:請確認金鑰密碼與 KeyStore 密碼相同。
- 將憑證匯出成獨立檔案:
keytool -export -alias node0 -file node0.cer \ -keystore keystore.node0
- 確保只有 Apigee 使用者能讀取這個檔案,且其他使用者無法讀取:
$ chown apigee:apigee \ /opt/apigee/data/apigee-cassandra/keystore.node0 $ chmod 400 /opt/apigee/data/apigee-cassandra/keystore.node0
- 將產生的憑證
node0.cer
匯入節點的信任存放區:keytool -import -v -trustcacerts -alias node0 \ -file node0.cer -keystore truststore.node0
上述指令會要求您設定密碼。這是信任儲存庫密碼,且 不同於您先前設定的 KeyStore 密碼。如果系統提示您信任憑證, 輸入
yes
。 - 使用 opensl 產生不含金鑰的憑證 PEM 檔案。請注意,
cqlsh
「無法」與系統產生的憑證搭配使用。$ keytool -importkeystore -srckeystore keystore.node0 \ -destkeystore node0.p12 -deststoretype PKCS12 -srcstorepass \ keypass -deststorepass keypass $ openssl pkcs12 -in node0.p12 -nokeys -out node0.cer.pem \ -passin pass:keypass $ openssl pkcs12 -in node0.p12 -nodes -nocerts -out node0.key.pem -passin pass:keypass
- 如需節點對節點加密,請將
node0.cer
檔案複製到每個節點並匯入 每個節點的信任存放區keytool -import -v -trustcacerts -alias node0 \ -file node0.cer -keystore truststore.node1
- 使用
keytool -list
檢查 KeyStore 和信任儲存庫檔案中的憑證:$ keytool -list -keystore keystore.node0 $ keytool -list -keystore truststore.node0