設定 Apigee mTLS

在叢集的所有節點中安裝 Apigee mTLS 後,請設定並初始化 apigee-mtls 元件。方法是產生憑證/金鑰組,並在管理機器上更新設定檔。接著,將相同的產生的檔案和設定檔部署至叢集中的所有節點,並初始化本機 apigee-mtls 元件。

設定 apigee-mtls (初始安裝後)

本節說明如何在初始安裝後直接設定 Apigee mTLS。如要瞭解如何更新 Apigee mTLS「現有的」安裝狀態,請參閱「變更現有的 apigee-mtls 設定」。

本節適用於單一資料中心內的安裝作業。如要瞭解如何在多個資料中心設定中設定 Apigee mTLS,請參閱為 Apigee mTLS 設定多個資料中心

設定 apigee-mtls 的一般程序如下:

  1. 更新設定檔在管理電腦上更新設定檔,加入 apigee-mtls 設定。
  2. 安裝 Consul 並產生憑證請安裝 Consul,並視需要使用它產生傳輸層安全標準 (TLS) 憑證 (僅限一次)。

    此外,請將 Apigee mTLS 設定檔編輯為:

    1. 新增憑證資訊
    2. 定義叢集的拓撲

    請注意,您可以使用現有的憑證或使用 Consul 產生憑證

  3. 發布憑證和設定檔將相同的憑證/金鑰組和更新設定檔發布至叢集中的所有節點。
  4. 初始化 apigee-mtls初始化每個節點上的 apigee-mtls 元件。

以下各節將逐一說明這些步驟。

步驟 1:更新設定檔

本節說明如何修改設定檔,加入 mTLS 設定屬性。如要進一步瞭解設定檔,請參閱建立設定檔一文。

使用 mTLS 相關屬性更新設定檔後,請將設定檔複製到叢集中的所有節點,然後在這些節點上初始化 apigee-mtls 元件。

如何更新設定檔:

  1. 在管理電腦上開啟設定檔進行編輯。
  2. 複製以下這組 mTLS 設定屬性,並貼到設定檔中:
    ALL_IP="ALL_PRIVATE_IPS_IN_CLUSTER"
    ZK_MTLS_HOSTS="ZOOKEEPER_PRIVATE_IPS"
    CASS_MTLS_HOSTS="CASSANDRA_PRIVATE_IPS"
    PG_MTLS_HOSTS="POSTGRES_PRIVATE_IPS"
    RT_MTLS_HOSTS="ROUTER_PRIVATE_IPS"
    MS_MTLS_HOSTS="MGMT_SERVER_PRIVATE_IPS"
    MP_MTLS_HOSTS="MESSAGE_PROCESSOR_PRIVATE_IPS"
    QP_MTLS_HOSTS="QPID_PRIVATE_IPS"
    LDAP_MTLS_HOSTS="OPENLDAP_PRIVATE_IPS"
    MTLS_ENCAPSULATE_LDAP="y"
    
    ENABLE_SIDECAR_PROXY="y"
    ENCRYPT_DATA="BASE64_GOSSIP_MESSAGE"
    PATH_TO_CA_CERT="PATH/TO/consul-agent-ca.pem"
    PATH_TO_CA_KEY="PATH/TO/consul-agent-ca-key.pem"
    APIGEE_MTLS_NUM_DAYS_CERT_VALID_FOR="NUMBER_OF_DAYS"

    請依據您的設定設定每個屬性的值。

    下表說明這些設定屬性:

    屬性 說明
    ALL_IP 以空格分隔的清單,當中含有叢集內所有節點的私人主機 IP 位址。

    IP 位址的順序沒有任何影響,只是叢集的所有設定檔都必須相同。

    如果您為多個資料中心設定 Apigee mTLS,請列出所有區域中所有主機的所有 IP 位址。

    LDAP_MTLS_HOSTS 叢集內 OpenLDAP 節點的私人主機 IP 位址。
    ZK_MTLS_HOSTS

    以空格分隔的私人主機 IP 位址清單,其中託管 ZooKeeper 節點。

    請注意,根據需求,至少必須有三個 ZooKeeper 節點。

    CASS_MTLS_HOSTS 以空格分隔的私人主機 IP 位址清單,這些位址是在叢集中託管 Cassandra 伺服器。
    PG_MTLS_HOSTS 以空格分隔的私人主機 IP 位址清單,這些位址是在叢集中託管 Postgres 伺服器所在的位置。
    RT_MTLS_HOSTS 以空格分隔的私人主機 IP 位址清單,其中路由器託管於叢集中。
    MTLS_ENCAPSULATE_LDAP 加密郵件處理器和 LDAP 伺服器之間的 LDAP 流量。請設為 y
    MS_MTLS_HOSTS 私人主機 IP 位址清單 (以空格分隔),叢集內會託管管理伺服器節點。
    MP_MTLS_HOSTS 以空格分隔的私人主機 IP 位址清單,訊息處理器是在叢集中託管。
    QP_MTLS_HOSTS Qpid 伺服器託管於叢集中的私人主機 IP 位址清單 (以空格分隔)。
    ENABLE_SIDECAR_PROXY 決定 Cassandra 和 Postgres 是否應留意服務網格。

    您必須將這個值設為「y」。

    ENCRYPT_DATA Consul 使用的 Base64 編碼加密金鑰。這是使用「步驟 2:安裝 Consul 並產生憑證」中的 consul keygen 指令產生這組金鑰。

    叢集內所有節點的這個值都必須相同。

    PATH_TO_CA_CERT 憑證檔案在節點中的位置。這是您在步驟 2:安裝 Consul 並產生憑證時產生的檔案。

    叢集內所有節點的位置皆應相同,確保設定檔相同。

    憑證必須採用 X509v3 編碼。

    PATH_TO_CA_KEY 節點上金鑰檔案的位置。這是您在步驟 2:安裝 Consul 並產生憑證時產生的檔案。

    叢集內所有節點的位置皆應相同,確保設定檔相同。

    金鑰檔案必須採用 X509v3 編碼。

    APIGEE_MTLS_NUM_DAYS_CERT_VALID_FOR

    產生自訂憑證時,憑證的效期天數。

    預設值為 365。最大值是 7865 天 (5 年)。

    除了上述屬性以外,當您在多資料中心設定上安裝 Apigee mTLS 時,會使用幾項額外屬性。詳情請參閱設定多個資料中心一文。

  3. 請確認 ENABLE_SIDECAR_PROXY 已設為「y」。
  4. 請在主機相關屬性中更新 IP 位址。參照每個節點時,請務必使用私人 IP 位址,而非公開 IP 位址。

    在後續步驟中,您將設定其他屬性的值,例如 ENCRYPT_DATAPATH_TO_CA_CERTPATH_TO_CA_KEY。您尚未設定這些值。

    編輯 apigee-mtls 設定屬性時,請注意下列事項:

    • 所有屬性都是字串,所有屬性的值都必須以單引號或雙引號括住。
    • 如果主機相關值有多個私人 IP 位址,請以空格分隔每個 IP 位址。
    • 為設定檔中的所有主機相關屬性使用私人 IP 位址,而非主機名稱或公開 IP 位址。
    • 屬性值中的 IP 位址順序必須與叢集上所有設定檔的順序相同。
  5. 儲存您對設定檔所做的變更。

步驟 2:安裝 Consul 並產生憑證

本節說明如何安裝 Consul,並產生啟用 mTLS 的元件使用的憑證。

您必須選擇下列其中一種方法來產生憑證:

  • (建議做法) 按照本節所述,使用 Consul 建立自己的憑證授權單位 (CA)
  • 將現有 CA 憑證與 Apigee mTLS 搭配使用 (進階)

關於憑證

憑證包含下列項目:

  • Certificate:TLS 憑證
  • 金鑰:TLS 公開金鑰
  • Gossip 訊息:採用 Base-64 編碼的加密金鑰

每個檔案只會產生一次版本。接著將金鑰和憑證檔案複製到叢集中的所有節點,然後將加密金鑰新增至您也會複製到所有節點的設定檔。

如要進一步瞭解 Consul 的加密實作方式,請參閱下列資源:

安裝 Consul 並產生憑證

如要產生 Apigee mTLS 用來驗證私有雲叢集節點之間的安全通訊的憑證,請使用本機 Consul 二進位檔。因此,您必須先在管理機器上安裝 Consul,才能產生憑證。

如何安裝 Consul 並產生 mTLS 憑證:

  1. 在管理機器上,從 HashiCorp 網站下載 Consul 1.8.0 二進位檔。
  2. 將下載的封存檔案內容擷取下來。例如,將內容擷取到 /opt/consul/
  3. 在管理機器中執行下列指令,建立新的憑證授權單位 (CA):
    /opt/consul/consul tls ca create

    Consul 會建立下列檔案,做為憑證/金鑰組

    • consul-agent-ca.pem (憑證)
    • consul-agent-ca-key.pem (索引鍵)

    根據預設,憑證和金鑰檔案會採用 X509v3 編碼。

    稍後,您要將這些檔案複製到叢集中的所有節點。但目前,您只須決定這些檔案在節點上的「位置」。而且在所有節點上的位置應相同。例如 /opt/apigee/

  4. 在設定檔中,將 PATH_TO_CA_CERT 的值設為您要在節點上複製 consul-agent-ca.pem 檔案的位置。例如:
    PATH_TO_CA_CERT="/opt/apigee/consul-agent-ca.pem"
  5. PATH_TO_CA_KEY 的值設為您要在節點上複製 consul-agent-ca-key.pem 檔案的位置。例如:
    PATH_TO_CA_KEY="/opt/apigee/consul-agent-ca-key.pem"
  6. 執行下列指令,為 Consul 建立加密金鑰:
    /opt/consul/consul keygen

    Consul 會輸出類似下列內容的隨機字串:

    QbhgD+EXAMPLE+Y9u0742X/IqX3X429/x1cIQ+JsQvY=
  7. 複製這個產生的字串,並將其設為設定檔中 ENCRYPT_DATA 屬性的值。例如:
    ENCRYPT_DATA="QbhgD+EXAMPLE+Y9u0742X/IqX3X429/x1cIQ+JsQvY="
  8. 儲存設定檔。

以下範例顯示設定檔中的 mTLS 相關設定 (包含範例值):

...
IP1=10.126.0.121
IP2=10.126.0.124
IP3=10.126.0.125
IP4=10.126.0.127
IP5=10.126.0.130
ALL_IP="$IP1 $IP2 $IP3 $IP4 $IP5"
LDAP_MTLS_HOSTS="$IP3"
ZK_MTLS_HOSTS="$IP3 $IP4 $IP5"
CASS_MTLS_HOSTS="$IP3 $IP4 $IP5"
PG_MTLS_HOSTS="$IP2 $IP1"
RT_MTLS_HOSTS="$IP4 $IP5"
MS_MTLS_HOSTS="$IP3"
MP_MTLS_HOSTS="$IP4 $IP5"
QP_MTLS_HOSTS="$IP2 $IP1"
ENABLE_SIDECAR_PROXY="y"
ENCRYPT_DATA="QbhgD+EXAMPLE+Y9u0742X/IqX3X429/x1cIQ+JsQvY="
PATH_TO_CA_CERT="/opt/apigee/consul-agent-ca.pem"
PATH_TO_CA_KEY="/opt/apigee/consul-agent-ca-key.pem"
...

步驟 3:發布設定檔和憑證

使用 scp 等工具將下列檔案複製到所有節點:

  • 設定檔:複製這個檔案的更新版本,並取代所有節點上的現有版本 (而不僅是執行 ZooKeeper 的節點)。
  • consul-agent-ca.pem:複製至您在設定檔中指定為 PATH_TO_CA_CERT 值的位置。
  • consul-agent-ca-key.pem:複製至您在設定檔中指定為 PATH_TO_CA_KEY 值的位置。

請確認複製憑證和金鑰檔案的位置,與您在步驟 2:安裝 Consul 並產生憑證中設定的值相符。

步驟 4:初始化 apigee-mtls

在每個節點上安裝 apigee-mtls、更新設定檔,並將設定檔和憑證複製到叢集中的所有節點後,就可以初始化每個節點上的 apigee-mtls 元件。

如要初始化 apigee-mtls:

  1. 以超級使用者身分登入叢集中的節點。您能以任何順序對節點執行這些步驟。
  2. apigee:apigee 使用者設為已更新設定檔的擁有者,如以下範例所示:
    chown apigee:apigee config_file
  3. 執行下列指令來設定 apigee-mtls 元件:
    /opt/apigee/apigee-service/bin/apigee-service apigee-mtls setup -f config_file
  4. (選用) 執行下列指令,確認設定是否成功:
    /opt/apigee/apigee-mtls/lib/actions/iptables.sh validate
  5. 執行下列指令,啟動 Apigee mTLS:
    /opt/apigee/apigee-service/bin/apigee-service apigee-mtls start

    安裝 Apigee mTLS 後,您必須在節點上的任何其他元件「之前」啟動此元件。

  6. (僅限 Cassandra 節點) Cassandra 需要額外的引數,才能在安全性網格中運作。因此,您必須在每個 Cassandra 節點上執行下列指令:
    /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra setup -f config_file
    /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra configure
    /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
  7. (僅限 Postgres 節點) Postgres 需要額外的引數,才能在安全性網格中運作。因此,您必須在 Postgres 節點中執行下列操作:

    (僅限主要郵件)

    1. 在 Postgres 主要節點中執行下列指令:
      /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql setup -f config_file
      /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql configure
      /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql restart

    (僅限待命)

    1. 備份現有的 Postgres 資料。如要安裝 Apigee mTLS,您必須重新初始化主要/待命節點,導致資料遺失。詳情請參閱「為 Postgres 設定主要/待命複製功能」。
    2. 刪除所有 Postgres 資料:
      rm -rf /opt/apigee/data/apigee-postgresql/pgdata
    3. 設定 Postgres,然後重新啟動 Postgres,如以下範例所示:
      /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql setup -f config_file
      /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql configure
      /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql restart

    如果您要在多資料中心拓撲上安裝,請使用設定檔的絕對路徑。

  8. 起始順序的節點上啟動其餘的 Apigee 元件,如以下範例所示:
    /opt/apigee/apigee-service/bin/apigee-service component_name start
  9. 對叢集中的每個節點重複執行此程序。
  10. (選用) 使用下列一種或多種方法,確認 apigee-mtls 初始化成功:
    1. 驗證 iptables 設定
    2. 驗證遠端 Proxy 狀態
    3. 驗證仲裁狀態

    上述任一方法請參閱「驗證您的設定」一文。

變更現有的 apigee-mtls 設定

如要自訂現有的 apigee-mtls 設定,您必須先解除安裝 apigee-mtls,再重新安裝。您也必須將所有節點套用自訂設定。

如要重申一下這一點,在變更現有的 Apigee mTLS 設定時:

  • 如果變更了設定檔,必須先解除安裝 apigee-mtls,然後重新執行 setupconfigure
    # DO THIS:
    /opt/apigee/apigee-service/bin/apigee-service apigee-mtls uninstall
    
    # BEFORE YOU DO THIS:
    /opt/apigee/apigee-service/bin/apigee-service apigee-mtls setup -f file
    OR
    /opt/apigee/apigee-service/bin/apigee-service apigee-mtls configure
  • 您必須解除安裝叢集中的所有節點,然後重新執行 setupconfigure,而不只是單一節點。