查看 Apigee Edge 說明文件。
前往
Apigee X說明文件。 資訊
「伺服器名稱指示 (SNI)」允許多個 HTTPS 後端伺服器 IP 位址和通訊埠,這些後端伺服器不必使用相同的傳輸層安全標準 (TLS) 憑證。 是傳輸層安全標準 (TLS) 通訊協定的延伸。在用戶端啟用 SNI 後,用戶端會 做為初始 TLS 握手的一部分。這樣一來 TLS 伺服器會決定要使用哪一個 TLS 憑證來驗證來自 用戶端。
根據預設,Private Cloud 的 Edge 中訊息處理器元件會停用 SNI 確保與現有後端伺服器保持回溯相容性。如果您的後端伺服器 設定支援 SNI,然後您必須為訊息處理器元件啟用 SNI。 否則,透過 Apigee Edge 執行的 API 要求將會失敗,並顯示 TLS 握手失敗。
本文件說明如何執行下列操作:
- 確認後端伺服器是否已啟用 SNI
- 在訊息處理器中啟用 SNI,以便與後端通訊 支援 SNI 的伺服器
- 視需要停用訊息處理器上的 SNI
- 確認 SNI 設定已成功更新 訊息處理器
事前準備
- 如果您不熟悉 SNI,請參閱 使用 SNI 搭配邊緣。
- 如果不熟悉在 Private Cloud 中設定 Edge 的方式,請參閱 如何設定 Edge。
識別已啟用 SNI 的伺服器
本節說明如何判斷後端伺服器是否已啟用 SNI。
-
執行
openssl
指令,並嘗試連線至相關伺服器主機名稱 (Edge Router 或後端伺服器),「不傳遞伺服器名稱」,如下所示:openssl s_client -connect hostname:port
-
你可能會取得憑證,有時可能會觀察到
openssl
指令,如下所示:
CONNECTED(00000003) 9362:error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure:/BuildRoot/Library/Caches/com.apple.xbs/Sources/OpenSSL098/OpenSSL098-64.50.6/src/ssl/s23_clnt.c:593
-
執行
openssl
指令,並嘗試連線至相關伺服器 主機名稱 (Edge 路由器或後端伺服器),如下所示傳遞伺服器名稱:openssl s_client -connect hostname:port -servername hostname
- 如果步驟 1 發生握手失敗,或在步驟 1 和步驟 2 取得不同的憑證, 則代表指定伺服器已啟用 SNI。
- 如要為多個後端伺服器驗證狀態,您必須 為每個後端伺服器重複執行上述步驟。
如果您發現一或多個已啟用 SNI 的後端伺服器,就需要 按照以下說明,在訊息處理器元件上啟用 SNI。否則 API 透過 Apigee Edge 傳送的要求失敗 TLS 握手失敗。
在邊緣訊息處理器和後端伺服器之間啟用 SNI
本節說明如何在邊緣訊息處理器和後端之間啟用 SNI
伺服器您可以透過屬性 jsse.enableSNIExtension
啟用 SNI
「訊息處理者」元件如要設定訊息處理器上的任何屬性,請使用
宣告符記
如何設定 Edge。
如要在訊息處理器中啟用 SNI,請按照下列步驟操作:
找出 jsse.enableSNIExtension
資源的符記
下列步驟說明如何找出
jsse.enableSNIExtension
屬性:
-
在訊息處理器來源中搜尋
jsse.enableSNIExtension
屬性 使用下列指令目錄/opt/apigee/edge-message-processor/source
:grep -ri "jsse.enableSNIExtension" /opt/apigee/edge-message-processor/source
-
這個指令的輸出結果會顯示訊息處理者屬性的權杖
jsse.enableSNIExtension
,如下所示:/opt/apigee/edge-message-processor/source/conf/system.properties:jsse.enableSNIExtension={T}conf_system_jsse.enableSNIExtension{/T}
{T}{/T}
標記之間的字串是權杖的名稱 您可以在訊息處理者的.properties
檔案中設定這項功能因此,屬性
jsse.enableSNIExtension
的符記如下:conf_system_jsse.enableSNIExtension
啟用訊息處理器上的 SNI
下列步驟說明如何在 Apigee 訊息處理器元件中啟用 SNI。
- 在訊息處理器電腦上,以編輯器開啟下列檔案。否則
並加以建立
/opt/apigee/customer/application/message-processor.properties
舉例來說,如果要使用
vi
,請輸入下列指令:vi /opt/apigee/customer/application/message-processor.properties
-
在屬性檔案中加入以下格式的一行:
conf_system_jsse.enableSNIExtension=true
- 儲存變更。
-
確認這個屬性檔案由
apigee
使用者擁有,如下所示:chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
-
重新啟動訊息處理器,如下所示:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
- 請確認應用程式的 SNI 設定已更新 訊息處理器。
- 如果您有多部訊息處理器,請針對所有 訊息處理器。
停用邊緣訊息處理器和後端伺服器之間的 SNI
一般來說,啟用 SNI 後應該不會出現任何問題。但如果你觀察到 因此 Edge Message Processor 與後端伺服器之間如有連線問題 啟用 SNI 後,您隨時可以執行下列步驟來停用 SNI。
設定屬性 jsse.enableSNIExtension
即可停用 SNI
返回「訊息處理器」元件上的 false
。
停用訊息處理器上的 SNI
下列步驟說明如何在 Apigee 訊息處理器中停用 SNI。
-
在訊息處理器電腦上,以編輯器開啟下列檔案。否則
並加以建立
/opt/apigee/customer/application/message-processor.properties
舉例來說,如果要使用
vi
,請輸入下列指令:vi /opt/apigee/customer/application/message-processor.properties
-
如果
conf_system_jsse.enableSNIExtension=true
行存在/opt/apigee/customer/application/message-processor.properties
,然後將其修改為 如下:conf_system_jsse.enableSNIExtension=false
- 儲存變更。
-
確認這個屬性檔案由
apigee
使用者擁有,如下所示:chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
-
重新啟動訊息處理器,如下所示:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
- 請確認應用程式的 SNI 設定已更新 訊息處理器。
- 如果您有多部訊息處理器,請針對所有 訊息處理器。
驗證訊息處理器上的 SNI 設定
本節說明如何驗證 SNI 設定是否成功 已經在「訊息處理器」上更新
即使您使用 conf_system_jsse.enableSNIExtension
權杖
在訊息處理器設定 SNI,您必須驗證實際屬性
已將 jsse.enableSNIExtension
設為新值。
-
在訊息處理器電腦上搜尋屬性
jsse.enableSNIExtension
位於/opt/apigee/edge-message-processor/conf
目錄中 已經設定新的值,如下所示:grep -ri "jsse.enableSNIExtension" /opt/apigee/edge-message-processor/conf
-
如果 SNI 設定順利在訊息處理器中更新,則
上述指令顯示
system.properties
檔案中的新值。您在訊息處理器中啟用 SNI 後,來自上述指令的範例結果 如下:
/opt/apigee/edge-message-processor/conf/system.properties:jsse.enableSNIExtension=true
同樣地,停用 訊息處理器如下:
/opt/apigee/edge-message-processor/conf/system.properties:jsse.enableSNIExtension=false
在上述的輸出內容範例中,請注意屬性
jsse.enableSNIExtension
已更新為新的值true
或false
,system.properties
。這表示 SNI 已成功啟用, 已停用「訊息處理器」上的這項功能 -
如果仍看到
jsse.enableSNIExtension
屬性的舊值,則 確認您已按照相關章節中所述的所有步驟啟用服務 或是正確停用 SNI如果您漏掉任何步驟,請再次正確重複所有步驟。 - 如果還是無法啟用/停用 SNI ,請與 Apigee Edge 支援。