您目前查看的是 Apigee Edge 說明文件。
前往 Apigee X 說明文件。 info
伺服器名稱指標 (SNI) 可讓多個 HTTPS 後端伺服器透過相同的 IP 位址和通訊埠提供服務,不必使用相同的 TLS 憑證。這是 TLS 通訊協定的延伸版本,在用戶端啟用 SNI 後,用戶端會在初始 TLS 握手期間傳遞後端伺服器的主機名稱。這可讓 TLS 伺服器判斷應使用哪個 TLS 憑證來驗證用戶端的要求。
根據預設,Edge for Private Cloud 的訊息處理器元件會停用 SNI,確保與現有後端伺服器向後相容。如果後端伺服器已設定為支援 SNI,則必須在訊息處理器元件上啟用 SNI。否則,透過 Apigee Edge 傳送的 API 要求會失敗,並顯示 TLS 握手失敗錯誤訊息。
本文說明如何執行下列操作:
- 判斷後端伺服器是否已啟用 SNI
- 在訊息處理器上啟用 SNI,以便與支援 SNI 的後端伺服器通訊
- 視需要在訊息處理器上停用 SNI
- 確認 SNI 設定已在訊息處理器上成功更新。
事前準備
識別已啟用 SNI 的伺服器
本節說明如何判斷後端伺服器是否已啟用 SNI。
-
執行
openssl指令,並嘗試連線至相關伺服器主機名稱 (邊緣路由器或後端伺服器),但不要傳遞伺服器名稱,如下所示: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,方法如下所述。否則,透過 Apigee Edge 傳送的 API 要求會失敗,並顯示 TLS 握手失敗錯誤訊息。
在 Edge 訊息處理器和後端伺服器之間啟用 SNI
本節說明如何在 Edge 訊息處理器和後端伺服器之間啟用 SNI。您可以在訊息處理器元件上透過 jsse.enableSNIExtension 屬性啟用 SNI。如要在訊息處理器上設定任何屬性,請按照如何設定 Edge所述的語法使用權杖。
如要在 Message Processor 上啟用 SNI,請按照下列步驟操作:
找出 jsse.enableSNIExtension 資源的權杖
下列步驟說明如何找出 jsse.enableSNIExtension 資源的權杖:
-
使用下列指令,在訊息處理器來源目錄
/opt/apigee/edge-message-processor/source中搜尋jsse.enableSNIExtension屬性:grep -ri "jsse.enableSNIExtension" /opt/apigee/edge-message-processor/source
-
這項指令的輸出內容會顯示 Message Processor 屬性的權杖
jsse.enableSNIExtension,如下所示:/opt/apigee/edge-message-processor/source/conf/system.properties:jsse.enableSNIExtension={T}conf_system_jsse.enableSNIExtension{/T}{T}{/T}標記之間的字串是可在 Message Processor 的.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 設定。
- 如果您有多個訊息處理器,請在所有訊息處理器上重複上述步驟。
在 Edge 訊息處理器和後端伺服器之間停用 SNI
啟用 SNI 後,一般來說不會再看到任何問題。不過,如果在啟用 SNI 後,發現 Edge 訊息處理器與後端伺服器之間有任何連線問題,隨時可以按照下列步驟停用 SNI。
如要停用 SNI,請在訊息處理器 元件上將 jsse.enableSNIExtension 屬性設回 false。
在訊息處理工具上停用 SNI
下列步驟說明如何在 Apigee Message Processor 上停用 SNI。
-
在訊息處理器電腦上,使用編輯器開啟下列檔案。如果該目錄不存在,請建立該目錄。
/opt/apigee/customer/application/message-processor.properties
舉例來說,如要使用
vi開啟檔案,請輸入下列指令:vi /opt/apigee/customer/application/message-processor.properties
-
如果
/opt/apigee/customer/application/message-processor.properties中有conf_system_jsse.enableSNIExtension=true這行,請按照下列方式修改: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 已設為新值。
-
在訊息處理器電腦上,搜尋
/opt/apigee/edge-message-processor/conf目錄中的jsse.enableSNIExtension屬性,並檢查是否已設定新值,如下所示: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
同樣地,在訊息處理器上停用 SNI 後,上述指令的範例結果如下:
/opt/apigee/edge-message-processor/conf/system.properties:jsse.enableSNIExtension=false
在上述範例輸出內容中,請注意
jsse.enableSNIExtension屬性已在system.properties中更新為新值true或false。這表示訊息處理器已成功啟用或停用 SNI。 -
如果屬性
jsse.enableSNIExtension仍顯示舊值,請確認您已按照適當章節中的所有步驟,正確啟用或停用 SNI。如果遺漏任何步驟,請再次正確執行所有步驟。 - 如果還是無法啟用/停用 SNI,請聯絡 Apigee Edge 支援團隊。