在叢集中的所有節點上安裝 Apigee mTLS 後,您必須設定並初始化 apigee-mtls
元件。方法是在管理電腦上產生憑證/金鑰組,並更新設定檔。然後將產生的檔案和設定檔部署至叢集中的所有節點,並初始化本機 apigee-mtls
元件。
設定 apigee-mtls (初始安裝後)
本節說明如何在初始安裝後直接設定 Apigee mTLS。如要瞭解如何更新現有的 Apigee mTLS 安裝作業,請參閱「變更現有的 apigee-mtls 設定」。
本節適用於單一資料中心的安裝作業。如要瞭解如何在多個資料中心設定中設定 Apigee mTLS,請參閱「為 Apigee mTLS 設定多個資料中心」。
設定 apigee-mtls
的一般程序如下:
- 更新設定檔:在管理電腦上更新設定檔,加入
apigee-mtls
設定。 - 安裝 Consul 並產生憑證:安裝 Consul,並 (選用) 使用 Consul 產生 TLS 憑證 (僅限一次)。
此外,請編輯 Apigee mTLS 設定檔,將:
- 新增憑證資訊
- 定義叢集的拓撲
請注意,您可以使用現有憑證,或透過 Consul 產生憑證。
- 發布憑證和設定檔: 將產生的相同憑證/金鑰配對和更新的設定檔,發布至叢集中的所有節點。
- 初始化 apigee-mtls:在每個節點上初始化
apigee-mtls
元件。
以下各節將說明這些步驟。
步驟 1:更新設定檔
本節說明如何修改設定檔,加入 mTLS 設定屬性。如要進一步瞭解設定檔,請參閱建立設定檔。
使用 mTLS 相關屬性更新設定檔後,請先將設定檔複製到叢集中的所有節點,再初始化這些節點上的 apigee-mtls
元件。
如何更新設定檔:
- 在管理電腦上開啟設定檔進行編輯。
- 複製下列 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
叢集中 SymasLDAP 節點的私人主機 IP 位址。 ZK_MTLS_HOSTS
以空格分隔的私人主機 IP 位址清單,ZooKeeper 節點會託管在叢集中的這些位址。
請注意,根據規定,至少要有三個 ZooKeeper 節點。
CASS_MTLS_HOSTS
以空格分隔的清單,列出叢集中 Cassandra 伺服器所在的私人主機 IP 位址。 PG_MTLS_HOSTS
以空格分隔的清單,列出叢集中 Postgres 伺服器的主機私人 IP 位址。 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 時,還會使用其他屬性。詳情請參閱「設定多個資料中心」。
- 確認
ENABLE_SIDECAR_PROXY
已設為「y」。 - 更新主機相關屬性中的 IP 位址。請務必使用各節點的私人 IP 位址,而非公開 IP 位址。
在後續步驟中,您將設定其他屬性的值,例如
ENCRYPT_DATA
、PATH_TO_CA_CERT
和PATH_TO_CA_KEY
。您尚未設定這些值。編輯
apigee-mtls
設定屬性時,請注意下列事項:- 所有屬性都是字串,您必須將所有屬性的值括在單引號或雙引號中。
- 如果主機相關值有多個私人 IP 位址,請以半形空格分隔各個 IP 位址。
- 在設定檔中,所有主機相關屬性都請使用私人 IP 位址,而非主機名稱或公開 IP 位址。
- 在叢集的所有設定檔中,屬性值中的 IP 位址順序必須相同。
- 儲存對設定檔所做的變更。
步驟 2:安裝 Consul 並產生憑證
本節說明如何安裝 Consul,以及產生啟用 mTLS 的元件所使用的憑證。
您必須選擇下列其中一種方法來產生憑證:
- (建議) 使用 Consul 建立自己的憑證授權單位 (CA),如本節所述
- 使用現有 CA 的憑證搭配 Apigee mTLS (進階)
關於憑證
憑證包含下列項目:
- 憑證:傳輸層安全標準 (TLS) 憑證
- 金鑰:TLS 公開金鑰
- 八卦訊息:Base64 編碼的加密金鑰
您只需為每個檔案產生一個版本。接著,將金鑰和憑證檔案複製到叢集中的所有節點,並將加密金鑰新增至設定檔,然後將設定檔也複製到所有節點。
如要進一步瞭解 Consul 的加密實作方式,請參閱下列內容:
安裝 Consul 並產生憑證
如要產生 Apigee mTLS 用於驗證 Private Cloud 叢集節點間安全通訊的憑證,請使用本機 Consul 二進位檔。因此,您必須先在管理機器上安裝 Consul,才能產生憑證。
如要安裝 Consul 並產生 mTLS 憑證,請按照下列步驟操作:
- 在管理電腦上,從 HashiCorp 網站下載 Consul 1.8.0 二進位檔。
- 將下載的封存檔案解壓縮。例如,將內容解壓縮至
/opt/consul/
。 - 在管理機器上,執行下列指令建立新的憑證授權單位 (CA):
/opt/consul/consul tls ca create
Consul 會建立下列檔案,這些檔案會形成憑證/金鑰配對:
consul-agent-ca.pem
(認證)consul-agent-ca-key.pem
(金鑰)
根據預設,憑證和金鑰檔案會以 X509v3 編碼。
稍後,您會將這些檔案複製到叢集中的所有節點。不過,目前您只需要決定要在節點的哪個位置放置這些檔案。每個節點上的位置應相同。例如
/opt/apigee/
。 - 在設定檔中,將
PATH_TO_CA_CERT
的值設為您要在節點上複製consul-agent-ca.pem
檔案的位置。例如:PATH_TO_CA_CERT="/opt/apigee/consul-agent-ca.pem"
- 將
PATH_TO_CA_KEY
的值設為節點上要複製consul-agent-ca-key.pem
檔案的位置。例如:PATH_TO_CA_KEY="/opt/apigee/consul-agent-ca-key.pem"
- 執行下列指令,為 Consul 建立加密金鑰:
/opt/consul/consul keygen
Consul 會輸出隨機字串,類似於下列內容:
QbhgD+EXAMPLE+Y9u0742X/IqX3X429/x1cIQ+JsQvY=
- 複製產生的字串,並在設定檔中將其設為
ENCRYPT_DATA
屬性的值。例如:ENCRYPT_DATA="
QbhgD+EXAMPLE+Y9u0742X
/IqX3X429/x1cIQ+JsQvY=" - 儲存設定檔。
以下範例顯示設定檔中與 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:
- 以超級使用者身分登入叢集中的節點。您可以按照任何順序在節點上執行這些步驟。
- 將
apigee:apigee
使用者設為更新後設定檔的擁有者,如下列範例所示:chown apigee:apigee config_file
- 執行下列指令,設定
apigee-mtls
元件:/opt/apigee/apigee-service/bin/apigee-service apigee-mtls setup -f config_file
- (選用) 執行下列指令,確認設定是否成功:
/opt/apigee/apigee-mtls/lib/actions/iptables.sh validate
- 執行下列指令,啟動 Apigee mTLS:
/opt/apigee/apigee-service/bin/apigee-service apigee-mtls start
安裝 Apigee mTLS 後,您必須先啟動這個元件,才能啟動節點上的任何其他元件。
- (僅限 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
- (僅限 Postgres 節點) Postgres 需要額外引數,才能在安全網格中運作。因此,您必須在 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
(僅限待機模式)
- 備份現有的 Postgres 資料。如要安裝 Apigee mTLS,您必須重新初始化主要/待命節點,因此會遺失資料。詳情請參閱「為 Postgres 設定主要/待命複寫」。
- 刪除所有 Postgres 資料:
rm -rf /opt/apigee/data/apigee-postgresql/pgdata
- 設定 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
如果要在多資料中心拓撲上安裝,請使用設定檔的絕對路徑。
- 在 Postgres 主要節點上執行下列指令:
- 按照啟動順序,在節點上啟動其餘 Apigee 元件,如下列範例所示:
/opt/apigee/apigee-service/bin/apigee-service component_name start
- 針對叢集中的每個節點重複執行這個程序。
- (選用) 使用下列一或多種方法,確認
apigee-mtls
初始化作業是否成功:- 驗證 iptables 設定
- 驗證遠端 Proxy 狀態
- 確認仲裁狀態
如要瞭解這些方法,請參閱「驗證設定」。
變更現有的 apigee-mtls 設定
如要自訂現有的 apigee-mtls
設定,請解除安裝並重新安裝 apigee-mtls
。此外,請務必在所有節點套用自訂設定。
再次強調,變更現有 Apigee mTLS 設定時:
- 如果變更設定檔,請先解除安裝
apigee-mtls
,然後重新執行setup
或configure
:# 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
- 您必須在叢集中的所有節點上解除安裝並重新執行
setup
或configure
,而不只是單一節點。