設定邊緣訊息處理器和後端伺服器之間的 SNI

查看 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。

  1. 執行 openssl 指令,並嘗試連線至相關伺服器主機名稱 (Edge Router 或後端伺服器),「不傳遞伺服器名稱」,如下所示:
    openssl s_client -connect hostname:port
    
  2. 你可能會取得憑證,有時可能會觀察到 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
    
  3. 執行 openssl 指令,並嘗試連線至相關伺服器 主機名稱 (Edge 路由器或後端伺服器),如下所示傳遞伺服器名稱
    openssl s_client -connect hostname:port -servername hostname
    
  4. 如果步驟 1 發生握手失敗,或在步驟 1 和步驟 2 取得不同的憑證, 則代表指定伺服器已啟用 SNI。
  5. 如要為多個後端伺服器驗證狀態,您必須 為每個後端伺服器重複執行上述步驟。

如果您發現一或多個已啟用 SNI 的後端伺服器,就需要 按照以下說明,在訊息處理器元件上啟用 SNI。否則 API 透過 Apigee Edge 傳送的要求失敗 TLS 握手失敗

在邊緣訊息處理器和後端伺服器之間啟用 SNI

本節說明如何在邊緣訊息處理器和後端之間啟用 SNI 伺服器您可以透過屬性 jsse.enableSNIExtension 啟用 SNI 「訊息處理者」元件如要設定訊息處理器上的任何屬性,請使用 宣告符記 如何設定 Edge

如要在訊息處理器中啟用 SNI,請按照下列步驟操作:

  1. 找出 jsse.enableSNIExtension 屬性的權杖
  2. 在訊息處理器中啟用 SNI

找出 jsse.enableSNIExtension 資源的符記

下列步驟說明如何找出 jsse.enableSNIExtension 屬性:

  1. 在訊息處理器來源中搜尋 jsse.enableSNIExtension 屬性 使用下列指令目錄 /opt/apigee/edge-message-processor/source
    grep -ri "jsse.enableSNIExtension" /opt/apigee/edge-message-processor/source
    
  2. 這個指令的輸出結果會顯示訊息處理者屬性的權杖 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。

  1. 在訊息處理器電腦上,以編輯器開啟下列檔案。否則 並加以建立
    /opt/apigee/customer/application/message-processor.properties
    

    舉例來說,如果要使用 vi,請輸入下列指令:

    vi /opt/apigee/customer/application/message-processor.properties
    
  2. 在屬性檔案中加入以下格式的一行:
    conf_system_jsse.enableSNIExtension=true
    
  3. 儲存變更。
  4. 確認這個屬性檔案由 apigee 使用者擁有,如下所示:
    chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
    
  5. 重新啟動訊息處理器,如下所示:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    
  6. 請確認應用程式的 SNI 設定已更新 訊息處理器。
  7. 如果您有多部訊息處理器,請針對所有 訊息處理器。

停用邊緣訊息處理器和後端伺服器之間的 SNI

一般來說,啟用 SNI 後應該不會出現任何問題。但如果你觀察到 因此 Edge Message Processor 與後端伺服器之間如有連線問題 啟用 SNI 後,您隨時可以執行下列步驟來停用 SNI。

設定屬性 jsse.enableSNIExtension 即可停用 SNI 返回「訊息處理器」元件上的 false

停用訊息處理器上的 SNI

下列步驟說明如何在 Apigee 訊息處理器中停用 SNI。

  1. 在訊息處理器電腦上,以編輯器開啟下列檔案。否則 並加以建立
    /opt/apigee/customer/application/message-processor.properties
    

    舉例來說,如果要使用 vi,請輸入下列指令:

    vi /opt/apigee/customer/application/message-processor.properties
    
  2. 如果 conf_system_jsse.enableSNIExtension=true 行存在 /opt/apigee/customer/application/message-processor.properties,然後將其修改為 如下:
    conf_system_jsse.enableSNIExtension=false
    
  3. 儲存變更。
  4. 確認這個屬性檔案由 apigee 使用者擁有,如下所示:
    chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
    
  5. 重新啟動訊息處理器,如下所示:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    
  6. 請確認應用程式的 SNI 設定已更新 訊息處理器。
  7. 如果您有多部訊息處理器,請針對所有 訊息處理器。

驗證訊息處理器上的 SNI 設定

本節說明如何驗證 SNI 設定是否成功 已經在「訊息處理器」上更新

即使您使用 conf_system_jsse.enableSNIExtension 權杖 在訊息處理器設定 SNI,您必須驗證實際屬性 已將 jsse.enableSNIExtension 設為新值。

  1. 在訊息處理器電腦上搜尋屬性 jsse.enableSNIExtension 位於 /opt/apigee/edge-message-processor/conf 目錄中 已經設定新的值,如下所示:
    grep -ri "jsse.enableSNIExtension" /opt/apigee/edge-message-processor/conf
    
  2. 如果 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 已更新為新的值 truefalsesystem.properties。這表示 SNI 已成功啟用, 已停用「訊息處理器」上的這項功能

  3. 如果仍看到 jsse.enableSNIExtension 屬性的舊值,則 確認您已按照相關章節中所述的所有步驟啟用服務 或是正確停用 SNI如果您漏掉任何步驟,請再次正確重複所有步驟。
  4. 如果還是無法啟用/停用 SNI ,請與 Apigee Edge 支援