評估 API Proxy 中的傳輸層安全標準 (TLS) 連線資訊

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

Edge 可讓您建立支援單向和雙向 TLS 的虛擬主機。透過單向 TLS 用戶端會向部署在 Edge 路由器和路由器上的虛擬主機發出工作階段要求 回應會傳回包含虛擬主機公開金鑰的憑證。如果是已簽署的憑證,用戶端會 並可向憑證授權單位 (CA) 提出驗證憑證的要求。

在雙向傳輸層安全標準 (TLS) 中,用戶端和邊緣傳遞憑證都會做為要求的一部分進行驗證:

  • Edge Router 會向 TLS 用戶端提供其憑證,藉此驗證其本身。用戶端 然後驗證伺服器的身分,再將憑證傳送至伺服器。
  • TLS 用戶端會將憑證提供給 Edge 進行驗證。

詳情請參閱「關於虛擬主機」。

擷取 TLS 連線資訊

在透過支援 TLS 的虛擬主機向 API Proxy 提出要求時,Edge 可以擷取 TLS 連線的相關資訊。接著,API 代理程式就能透過流程變數存取這項資訊,執行其他分析和驗證作業。

Edge 擷取的 TLS 資訊類型取決於虛擬主機是否支援 單向或雙向傳輸層安全標準 (TLS)。舉例來說,針對單向 TLS,Edge 可以擷取 TLS 連線中使用的 TLS 加密或 TLS 通訊協定相關資訊。

針對雙向 TLS,Edge 可以擷取與單向 TLS 相同的所有資訊,並擷取用戶端憑證的相關資訊。舉例來說,Edge 可以擷取用戶端憑證的 SHA1 指紋,以及以 PEM 格式呈現的用戶端憑證。

正在擷取 單向與雙向傳輸層安全標準 (TLS)

下表列出已擷取 TLS 連線資訊的流量變數 ,且可在 API Proxy 中存取。系統會以單向擷取這項資訊 雙向 TLS,方法是將 <ConnectionProperties> 設為 true 虛擬主機定義:

流程變數 說明
tls.cipher TLS 連線使用的加密法。
tls.protocol 傳輸層安全標準 (TLS) 連線使用的通訊協定。
tls.server.name 要求的 SNI 伺服器名稱。
tls.session.id

工作階段 ID。

當您將 <ConnectionProperties><ClientProperties> 設為 true 時,即可使用這個流程變數。

在雙向傳輸層安全標準 (TLS) 期間擷取額外的 TLS 資訊

下表列出流程變數,其中包含 Edge 在雙向 TLS 中擷取的用戶端憑證詳細資料。如要擷取雙向 TLS 的這項資訊,請在虛擬主機定義中將 <ClientProperties> 設為 true:

流程變數 說明
tls.client.s.dn 用戶端憑證的主體辨別名稱 (DN)。
tls.client.i.dn 用戶端憑證的核發機構辨別名稱 (DN)。
tls.client.raw.cert PEM 格式的用戶端憑證。
tls.client.cert.serial 用戶端憑證的序號。
tls.client.cert.fingerprint 用戶端憑證的 SHA1 指紋。
tls.session.id

工作階段 ID。

<ConnectionProperties><ClientProperties> 設為 true 時,即可使用這個流程變數。

設定虛擬主機以擷取 TLS 資訊

如要設定虛擬主機來擷取 TLS 資訊,請設定下列屬性 低於 <PropagateTLSInformation>true

  • <ConnectionProperties>:啟用 TLS 連線資訊的擷取功能 單向與雙向傳輸層安全標準 (TLS) 的資訊。預設值為 false
  • <ClientProperties>:啟用其他資訊擷取功能 雙向傳輸層安全標準。預設值為 false

舉例來說,下列虛擬主機定義會使用雙向 TLS,並啟用兩種 TLS 資訊的擷取功能:

<VirtualHost name="secure">
    ....
    <SSLInfo>
        <Enabled>true</Enabled>
        # Enable two-way TLS.
        <ClientAuthEnabled>true</ClientAuthEnabled>
        <IgnoreValidationErrors>false</IgnoreValidationErrors>
        <KeyAlias>ks-alias</KeyAlias>
        <KeyStore>ref://ks-ref</KeyStore>
        <TrustStore>ref://ts-ref</TrustStore>
    </SSLInfo>
    <PropagateTLSInformation>
        <ConnectionProperties>true</ConnectionProperties>
        <ClientProperties>true</ClientProperties>
    </PropagateTLSInformation>
</VirtualHost>

如果您要傳遞 JSON 主體,請將屬性設為:

  "propagateTLSInformation" : {
    "connectionProperties" : true,
    "clientProperties" : true
  }

設定頁首大小限制

如果啟用虛擬主機的 TLS 資訊擷取功能,Edge 就會傳送該資訊 透過 HTTP 標頭因此,請務必設定適當的標頭大小限制 視您要使用 Edge 的雲端或 Edge 作為私有雲:

  • 雲端邊緣技術:Apigee 會適當設定標頭大小。
  • 私有雲的邊緣:不提供這項功能。

存取 API Proxy 中的流程變數

您可以透過 API Proxy 存取及檢查 TLS 流程變數。 舉例來說,您可以使用 AssignMessage 政策存取權,請透過 JavaScript 政策以 JavaScript 存取。

您也可以在 Proxy 或目標流程的 <Condition> 元素中參照流程變數。 或是在 <Step><RouteRule> 中例如,您可以將 並根據用戶端的 SN 向不同目標發送要求。

若需更多資訊,請參閱: