啟用 Cassandra 跨節點加密

節點間 (或節點對節點) 加密功能可確保資料在叢集中的節點之間傳輸資料安全無虞 也就是使用 TLS 加密本頁面說明如何在 Edge 上使用 TLS 啟用 Cassandra 節點間加密, 私有雲。如要執行這些步驟,您必須熟悉 Cassandra 的詳細資料 鈴聲。

啟用 Cassandra 節點間加密

如要啟用 Cassandra 節點間加密功能,請在 物件您必須將每個節點的公開憑證發布至所有節點。 完成後,每個節點就會包含憑證 其信任存放區中的 node0.cernode1.cer 等。每個節點 包含自己的私密金鑰 KeyStore。舉例來說,node0 只會包含 node0.pem KeyStore。您必須為各個節點啟用加密功能,一次一個節點。

如要啟用 Cassandra 節點間加密,請按照下列步驟操作:

  1. 按照附錄中的步驟產生伺服器憑證 建立自行簽署的金鑰 和憑證

    下列步驟假設您已建立 keystore.node0truststore.node0, 以及 KeyStore 和信任儲存庫密碼,詳情請參閱附錄。 在繼續操作之前,您應在每個節點上以初步步驟建立 KeyStore 和信任儲存庫 說明後續步驟

  2. /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
  3. 確認 API 使用者擁有 cassandra.properties 檔案:
    chown apigee:apigee \
    /opt/apigee/customer/application/cassandra.properties

在每個 Cassandra 節點上執行下列步驟 (一次執行一個步驟),讓變更生效 而不會對使用者造成任何停機時間:

  1. 停止 Cassandra 服務:
    /opt/apigee/apigee-service/bin/apigee-service \
    apigee-cassandra stop
  2. 重新啟動 Cassandra 服務:
    /opt/apigee/apigee-service/bin/apigee-service \
    apigee-cassandra start
  3. 如要判斷 TLS 加密服務是否已啟動,請在系統記錄中查看以下訊息:
    Starting Encrypted Messaging Service on TLS port

執行憑證輪替

如要輪替憑證,請按照下列步驟操作:

  1. 為每個產生的不重複金鑰組新增憑證 (請參閱附錄) 現有 Cassandra 節點的信任存放區,以使舊憑證和新憑證均位於相同的 信任儲存庫:
    keytool -import -v -trustcacerts -alias NEW_ALIAS \
    -file CERT -keystore EXISTING_TRUSTSTORE

    其中 NEW_ALIAS 是用來識別項目的不重複字串,CERT 則是 憑證名稱 要新增的檔案,以及 EXISTING_TRUSTSTORE 是 Cassandra 節點上現有信任存放區的名稱。

  2. 使用複製公用程式 (例如 scp),將信任儲存庫發布至叢集中的所有 Cassandra 節點 取代每個節點使用的現有信任存放區
  3. 執行叢集滾動式重新啟動,載入新的信任存放區並建立 並安裝新的金鑰:
    /opt/apigee/apigee-service/bin/apigee-service \
    apigee-cassandra restart
  4. 在叢集中的每個 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 and NEW_KEYSTORE_PASSWORD is the keystore password set when the certificates were created, as explained in the Appendix.

  5. Stop the Cassandra service:
    /opt/apigee/apigee-service/bin/apigee-service \
    apigee-cassandra stop
  6. 重新啟動 Cassandra 服務:
    /opt/apigee/apigee-service/bin/apigee-service \
    apigee-cassandra start
  7. 成功在所有節點之間建立通訊後,請前往 Cassandra 節點注意:只有在通訊成功時,才能繼續前往下一個節點 各個節點間建立的關係

附錄

以下範例說明如何準備伺服器憑證以執行 節點間加密步驟範例中顯示的指令使用下列參數:

參數 說明
node0 用來識別節點的任何不重複字串。
keystore.node0 KeyStore 名稱。這些指令會假設這個檔案位於目前的目錄中。
keypass KeyStore 和金鑰的金鑰組必須相同。
dname node0 的 IP 位址識別為 10.128.0.39
-validity 針對這個標記設定的值,產生的金鑰組在 10 年內有效。
  1. 前往以下目錄:
    cd /opt/apigee/data/apigee-cassandra
  2. 執行下列指令,在目前的目錄中產生名為 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 密碼相同。

  3. 將憑證匯出成獨立檔案:
    keytool -export -alias node0 -file node0.cer \
    -keystore keystore.node0
  4. 確保只有 Apigee 使用者能讀取這個檔案,且其他使用者無法讀取:
    $ chown apigee:apigee \
    /opt/apigee/data/apigee-cassandra/keystore.node0
    $ chmod 400 /opt/apigee/data/apigee-cassandra/keystore.node0
  5. 將產生的憑證 node0.cer 匯入節點的信任存放區:
    keytool -import -v -trustcacerts -alias node0 \
    -file node0.cer -keystore truststore.node0

    上述指令會要求您設定密碼。這是信任儲存庫密碼,且 不同於您先前設定的 KeyStore 密碼。如果系統提示您信任憑證, 輸入 yes

  6. 使用 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
  7. 如需節點對節點加密,請將 node0.cer 檔案複製到每個節點並匯入 每個節點的信任存放區
    keytool -import -v -trustcacerts -alias node0 \
    -file node0.cer -keystore truststore.node1
  8. 使用 keytool -list 檢查 KeyStore 和信任儲存庫檔案中的憑證:
    $ keytool -list -keystore keystore.node0
    $ keytool -list -keystore truststore.node0