搭配邊緣使用 SNI

查看 Apigee Edge 說明文件。
前往 Apigee X說明文件
資訊

「伺服器名稱指示」(SNI) 允許透過同一個 IP 提供多個 HTTPS 目標 無需要求這些目標使用相同的傳輸層安全標準 (TLS) 憑證。當 SNI 為 在用戶端上啟用後,用戶端會將目標端點的主機名稱做為初始值的一部分傳遞 TLS 握手。這樣可讓 TLS 伺服器判斷要使用哪一個 TLS 憑證進行驗證 要求。

舉例來說,如果要求目標為 https://example.com/request/path 那麼 TLS 用戶端會將 server_name 擴充功能新增至 TLS 握手。 要求,如下所示:

Edge 支援下列項目的 SNI:

  • 從用戶端應用程式對 API Proxy 的要求。在這種情況下,Edge 會做為 TLS 使用 伺服器
  • 從 Edge 到後端的要求。在這種情況下,Edge 會做為 TLS 用戶端。

如要進一步瞭解 SNI,請參閱:

支援 SNI 向以下位置對 API Proxy 發出的要求: 邊緣

向 API Proxy 發送要求的 SNI 支援是由主機別名和虛擬伺服器控管 主機。

關於虛擬圖片 主機和主機別名

使用 Edge 時,「虛擬主機」會定義 IP 位址和通訊埠,或 DNS 名稱和通訊埠 要公開的 API Proxy,以及應用程式用來存取 API Proxy 的網址。 IP 位址/DNS 名稱與 Edge 路由器相對應,通訊埠號碼則是 路由器

建立虛擬主機時,您必須一併指定虛擬主機的主機別名。 這通常是虛擬主機的 DNS 名稱。決定 API Proxy 之後 會處理要求,路由器則會比對傳入要求的 Host 標頭和 所有虛擬主機定義的可用主機別名清單。

虛擬主機的主機別名和通訊埠號碼的組合不得與 安裝 Edge 版本的虛擬主機這表示多個虛擬主機可使用 通訊埠編號 (前提是兩者的主機別名不同)。

虛擬主機也會定義是否使用 HTTP 通訊協定存取 API Proxy,或 透過傳輸層安全標準 (TLS) 加密 HTTPS 通訊協定將虛擬主機設為使用 HTTPS 時 將虛擬主機與 KeyStore 建立關聯,該 KeyStore 會使用憑證和私密金鑰 虛擬主機。

如要進一步瞭解虛擬主機,請參閱:

SNI 與 SNI 搭配運作的方式 主機別名

SNI 可讓您在同一個通訊埠上定義多個虛擬主機,且每個主機具有不同的 TLS 憑證和金鑰。接著,Edge 會決定虛擬主機,以及傳輸層安全標準 (TLS) 使用的憑證/金鑰組 根據server_name 註冊擴充軟體。

邊緣路由器會在 TLS 握手中讀取 server_name 擴充功能 然後使用它來搜尋來自所有虛擬主機的「主機別名」 主機。如果路由器偵測到與主機別名相符,路由器就會使用 TLS 憑證和金鑰來源 與主機別名相關聯的虛擬主機。如果找不到相符項目,TLS 握手會失敗。

您可以定義預設的憑證/金鑰組,而非讓 TLS 握手失敗, 所述。

在 Edge 中定義 Cloud 的預設憑證/金鑰組

Apigee 會提供傳輸層安全標準 (TLS) 憑證和私密金鑰,以便支援 HTTPS。雖然許多顧客 部署時,如果偏好使用自己的憑證和私密金鑰,則可部署您的 API 使用 Apigee 憑證和金鑰

在 Cloud Edge 中,如果路由器無法將 SNI 標頭與主機別名配對,或是 用戶端不支援 SNI,則路由器會使用 Apigee 提供的預設憑證。 也就是 *.apigee.net

在 Edge 中定義 Private Cloud 的預設憑證/金鑰組

在 Private Cloud 中,如果 server_name 擴充功能和主機別名之間找不到相符項目 或者如果提出要求的用戶端不支援 SNI,請將 路由器會使用通訊埠上預設虛擬主機的憑證/金鑰。預設虛擬主機為 由機構名稱、環境名稱和虛擬主機名稱的組合定義而成。 表單:

orgName_envName_vhName

路由器會使用來自該位址的 orgName_envName_vhName 組合中的憑證/金鑰 會按字母順序排列例如,要求傳入通訊埠 443, 在 prod 環境中,為機構 example 定義的兩個虛擬主機:

  • 虛擬主機名稱 = default
  • 虛擬主機名稱 = test

在這個範例中,路由器會使用名為 default 虛擬主機的憑證/金鑰 因為 example_prod_defaultexample_prod_test 之前的字母順序。

如何啟用預設虛擬主機:

  1. 在第一個路由器節點上編輯 /opt/apigee/customer/application/router.properties。 如果該檔案不存在,請建立該檔案。
  2. 在檔案中新增下列屬性,即可定義預設的虛擬主機:
    conf_load_balancing_load.balancing.driver.nginx.fallback.conf.enabled=true
  3. 重新啟動路由器:
    /opt/apigee/apigee-service/bin/apigee-service edge-router restart
  4. 對所有其他路由器重複執行上述步驟。

除了使用預設虛擬主機的憑證/金鑰外,您可以明確定義 預設憑證/金鑰請按照以下程序定義明確的預設值 憑證/金鑰組:

  1. 在第一個路由器節點上,將憑證和私密金鑰複製到路由器節點上的位置 可由 Apigee 使用者存取例如 /opt/apigee/customer/application
  2. 將檔案擁有權變更為「Apigee」。使用者:
    chown apigee:apigee /opt/apigee/customer/application/myCert.pem
    chown apigee:apigee /opt/apigee/customer/application/myKey.pem
  3. 編輯/opt/apigee/customer/application/router.properties。 如果該檔案不存在,請建立該檔案。
  4. 將下列屬性新增至檔案,即可指定預設憑證/金鑰:
    conf_load_balancing_load.balancing.driver.nginx.fallback.server.default.ssl.template.enabled=true
    conf_load_balancing_load.balancing.driver.nginx.fallback.conf.enabled=true
  5. 設定 router.properties 中的追蹤屬性以指定位置 憑證和金鑰的結構:
    conf_load_balancing_load.balancing.driver.nginx.ssl.cert=/opt/apigee/customer/application/myCert.pem
    conf_load_balancing_load.balancing.driver.nginx.ssl.key=/opt/apigee/customer/application/myKey.pem
  6. 重新啟動路由器:
    /opt/apigee/apigee-service/bin/apigee-service edge-router restart
  7. 對所有其他路由器重複執行上述步驟。

支援 SNI 以處理從 Edge 到 後端

Edge 支援從訊息處理器將 SNI 用於 Apigee Edge 的目標端點, 以及私有雲部署項目根據預設,邊緣訊息處理器會啟用 SNI 並在私有雲中停用

使用 將 SNI 傳送至 Edge 中的後端

為了讓 Private Cloud 具備回溯相容性,以便與現有目標後端回溯相容 Apigee 預設會停用 SNI。如果目標後端設為支援 SNI,您可以 請為您的 Edge 版本啟用這項功能。

不需要其他邊緣專屬設定。如果您的目標環境 SNI 和 Edge 支援。Edge 會從要求網址自動擷取主機名稱並新增主機名稱 傳送至 TLS 握手要求

針對 Edge 4.15.07.0x 版,在 Edge 和後端之間啟用 SNI

請使用下列程序啟用 SNI:

  1. 在第一個訊息處理器節點中開啟檔案 /opt/apigee4/conf/apigee/message-processor/system.properties在編輯器中。
  2. system.properties 中將下列屬性設為 true:
    jsse.enableSNIExtension=true
  3. 重新啟動訊息處理器:
    /opt/apigee4/bin/apigee-service message-processor restart
  4. 對其餘所有的訊息處理器重複上述步驟。

針對 Edge 4.16.01 以上版本,在 Edge 和後端之間啟用 SNI

請使用下列程序啟用 SNI:

  1. 在第一個訊息處理器節點上編輯 /opt/apigee/customer/application/message-processor.properties。 如果該檔案不存在,請建立該檔案。
  2. 在檔案中新增以下屬性:
    conf_system_jsse.enableSNIExtension=true
  3. 重新啟動訊息處理器:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
  4. 對其餘所有的訊息處理器重複上述步驟。