您目前查看的是 Apigee Edge 說明文件。
前往 Apigee X 說明文件。 info
伺服器名稱指標 (SNI) 可讓多個 HTTPS 目標透過相同的 IP 位址和通訊埠提供服務,不必使用相同的 TLS 憑證。在用戶端啟用 SNI 後,用戶端會將目標端點的主機名稱做為初始 TLS 握手的一部分傳遞。這樣一來,TLS 伺服器就能判斷要使用哪個 TLS 憑證驗證要求。
舉例來說,如果要求目標是 https://example.com/request/path,TLS 用戶端就會在 TLS 握手要求中加入 server_name 擴充功能,如下所示:

Edge 支援下列項目的 SNI:
- 用戶端應用程式傳送至 API Proxy 的要求。在這個情境中,Edge 會做為 TLS 伺服器
- 從 Edge 到後端的要求。在此情況下,Edge 會做為 TLS 用戶端。
如要進一步瞭解 SNI,請參閱:
- https://en.wikipedia.org/wiki/Server_Name_Indication
- http://blog.layershift.com/sni-ssl-production-ready/
支援對 Edge 上 API Proxy 的要求使用 SNI
對 API Proxy 的要求是否支援 SNI,取決於主機別名和虛擬主機。
關於虛擬主機和主機別名
在 Edge 中,虛擬主機會定義 API Proxy 公開的 IP 位址和通訊埠,或 DNS 名稱和通訊埠,以及應用程式用來存取 API Proxy 的網址。IP 位址/DNS 名稱對應至 Edge 路由器,而通訊埠號碼是路由器上開啟的通訊埠。
建立虛擬主機時,您也會指定虛擬主機的別名。通常是虛擬主機的 DNS 名稱。為判斷處理要求的 API Proxy,路由器會將傳入要求的 Host 標頭與所有虛擬主機定義的可用主機別名清單進行比較。
虛擬主機的主機別名和通訊埠編號組合,在 Edge 安裝作業中不得與其他虛擬主機重複。也就是說,如果虛擬主機有不同的主機別名,多個虛擬主機可以使用相同的通訊埠編號。
虛擬主機也會定義 API Proxy 是使用 HTTP 通訊協定存取,還是使用 TLS 加密的 HTTPS 通訊協定存取。將虛擬主機設定為使用 HTTPS 時,請將虛擬主機與含有憑證和私密金鑰的金鑰儲存區建立關聯,虛擬主機會在 TLS 握手期間使用這些憑證和私密金鑰。
如要進一步瞭解虛擬主機,請參閱:
SNI 如何搭配主機別名運作
SNI 可讓您在同一個通訊埠上定義多個虛擬主機,每個主機都有不同的 TLS 憑證和金鑰。然後,Edge 會根據 TLS 交握要求中的 server_name 擴充功能,判斷虛擬主機和 TLS 使用的憑證/金鑰配對。
Edge Router 會讀取 TLS 交握要求中的 server_name 擴充功能,然後使用該擴充功能,在所有虛擬主機的主機別名中進行搜尋。如果路由器偵測到與主機別名相符的項目,就會使用與主機別名相關聯的虛擬主機中的 TLS 憑證和金鑰。如果找不到相符項目,傳輸層安全標準 (TLS) 握手就會失敗。
您可以定義預設憑證/金鑰配對,避免 TLS 握手失敗,詳情請參閱下節。
在 Edge for the Cloud 中定義預設憑證/金鑰組合
Apigee 提供 TLS 憑證和私密金鑰,支援 HTTPS。雖然許多客戶偏好在部署時使用自己的憑證和私密金鑰,但您可以使用 Apigee 憑證和金鑰部署 API。
在 Edge for the Cloud 中,如果 Router 無法將 SNI 標頭與主機別名相符,或用戶端不支援 SNI,Router 就會使用 Apigee 提供的預設憑證 (*.apigee.net)。
在 Edge for Private Cloud 中定義預設憑證/金鑰組
在 Edge for Private Cloud 中,如果系統在所有虛擬主機的 server_name 擴充功能和主機別名之間找不到相符項目,或者要求用戶端不支援 SNI,您可以設定路由器,在通訊埠上使用預設虛擬主機的憑證/金鑰。預設虛擬主機是由機構名稱、環境名稱和虛擬主機名稱組合而成,格式如下:
orgName_envName_vhName
路由器會使用字母順序最前面的組合中的憑證/金鑰。orgName_envName_vhName舉例來說,要求是透過通訊埠 443 傳入,且環境 prod 中為機構 example 定義了兩個虛擬主機:
- 虛擬主機名稱 =
default - 虛擬主機名稱 =
test
在本範例中,由於 example_prod_default 的字母順序在 example_prod_test 之前,因此路由器會使用名為 default 的虛擬主機中的憑證/金鑰。
如要啟用預設虛擬主機,請按照下列步驟操作:
- 在第一個 Router 節點上,編輯
/opt/apigee/customer/application/router.properties。 如果該檔案不存在,請建立檔案。 - 在檔案中新增下列屬性,即可定義預設虛擬主機:
conf_load_balancing_load.balancing.driver.nginx.fallback.conf.enabled=true
- 重新啟動路由器:
/opt/apigee/apigee-service/bin/apigee-service edge-router restart
- 對其餘所有路由器重複上述步驟。
您可以在 Router 上明確定義預設憑證/金鑰,而非使用預設虛擬主機的憑證/金鑰。如要定義明確的預設憑證/金鑰組,請按照下列程序操作:
- 在第一個路由器節點上,將憑證和私密金鑰複製到路由器節點上 apigee 使用者可存取的位置。例如
/opt/apigee/customer/application。 - 將檔案擁有權變更為「apigee. user:
chown apigee:apigee /opt/apigee/customer/application/myCert.pem
chown apigee:apigee /opt/apigee/customer/application/myKey.pem
- 編輯「
/opt/apigee/customer/application/router.properties」。 如果該檔案不存在,請建立檔案。 - 在檔案中新增下列屬性,即可指定預設憑證/金鑰:
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 - 在
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
- 重新啟動路由器:
/opt/apigee/apigee-service/bin/apigee-service edge-router restart
- 對其餘所有路由器重複上述步驟。
支援從 Edge 到後端的要求 SNI
Edge 支援從訊息處理器使用 SNI,以鎖定 Apigee Edge for Cloud 和 Private Cloud 部署項目的端點。Edge 訊息處理器預設會在 Cloud 中啟用 SNI,並在 Private Cloud 中停用。
在 Edge for Private Cloud 中,使用 SNI 連線至後端
為與現有目標後端向後相容,Apigee 預設會停用 Edge for Private Cloud 的 SNI。如果目標後端已設定為支援 SNI,您可以為 Edge 版本啟用這項功能,方法如下所述。
無須進行其他 Edge 專屬設定。如果目標環境已設定 SNI,Edge 支援此設定。Edge 會自動從要求網址擷取主機名稱,並將其新增至 TLS 交握要求。
在 Edge 與後端之間啟用 SNI (適用於 Edge 4.15.07.0x 版)
請按照下列程序啟用 SNI:
- 在第一個訊息處理器節點上,使用編輯器開啟
/opt/apigee4/conf/apigee/message-processor/system.properties檔案。 - 在
system.properties中將下列屬性設為 true:jsse.enableSNIExtension=true
- 重新啟動訊息處理器:
/opt/apigee4/bin/apigee-service message-processor restart
- 對所有其餘的訊息處理器重複執行這些步驟。
在 Edge 4.16.01 以上版本中,啟用 Edge 與後端之間的 SNI
請按照下列程序啟用 SNI:
- 在第一個訊息處理器節點上,編輯
/opt/apigee/customer/application/message-processor.properties。如果該檔案不存在,請建立檔案。 - 在檔案中新增下列屬性:
conf_system_jsse.enableSNIExtension=true
- 重新啟動訊息處理器:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
- 對所有其餘的訊息處理器重複執行這些步驟。