API プロキシでの TLS 接続情報へのアクセス

このページの内容は ApigeeApigee ハイブリッドに該当します。

Apigee Edge のドキュメントを表示する。

ここでは、Apigee または Apigee ハイブリッドで実行されている API プロキシのフロー変数で TLS 接続情報にアクセスする方法について説明します。

TLS 接続情報を取り込む

API プロキシへのリクエスト中に、Apigee によって TLS 接続に関する情報が取り込まれます。この情報には API プロキシからフロー変数を通じてアクセスできるので、これを基に追加の分析や検証を行うことができます。

Apigee によって取り込まれる TLS 情報の種類は、Ingress でサポートされるように構成されている TLS が一方向か双方向かによって異なります(Apigee ハイブリッドにのみ適用)。たとえば、一方向 TLS の場合は、TLS 接続で使用される TLS 暗号や TLS プロトコルに関する情報が取り込まれます。

双方向 TLS の場合は、一方向 TLS で取り込まれるすべての情報に加えて、クライアントの証明書に関する情報も取り込まれます。たとえば、クライアント証明書の SHA1 フィンガープリントや PEM 形式のクライアント証明書が取り込まれます。

一方向 TLS と双方向 TLS の両方における情報の取り込み

次の表は、Apigee と Apigee ハイブリッドで取り込まれた TLS 接続情報を含むフロー変数を示したものです。これらのフロー変数には API プロキシからアクセスできます。

フロー変数 説明
tls.cipher TLS 接続で使用される暗号。
tls.protocol TLS 接続で使用されるプロトコル。
tls.server.name リクエストされた SNI サーバー名。
tls.session.id セッション ID。

双方向 TLS での追加の TLS 情報の取り込み

次の表は、双方向 TLS で Apigee ハイブリッドが取り込んだクライアント証明書の詳細を含むフロー変数を示したものです。

フロー変数 説明
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。

双方向 TLS を有効にするように Apigee ハイブリッドを構成する

クライアント証明書を要求するように Ingress を構成するには、オーバーライド ファイルに以下の詳細を追加します。

virtualhosts:
  - name: internal
    minTLSProtocolVersion: "1.2" #optional
    maxTLSProtocolVersion: "1.2" #optional
    tlsMode: MUTUAL
    sslSecret: tls-certificates

Istio Ingress での TLS と mTLS の構成もご覧ください。

API プロキシでフロー変数にアクセスする

TLS フロー変数へのアクセスとこの変数の確認は、API プロキシ内から行えます。たとえば、AssignMessage ポリシーまたは JavaScript ポリシーを使用してアクセスできます。

さらに、プロキシまたはターゲット フローの <Condition> 要素、あるいは <Step> または <RouteRule> でフロー変数を参照することもできます。たとえば、クライアントの SN に基づいて異なるターゲットにリクエストをルーティングするといったことが可能です。

詳細については以下をご覧ください。