評估 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 Proxy 就能透過 流程變數來執行其他分析和驗證。

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 擷取的用戶端憑證詳細資料 雙向傳輸層安全標準。系統會透過設定 虛擬主機定義中的 <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 向不同目標發送要求。

若需更多資訊,請參閱: