Citrix ADC

クライアントトラフィックを転送するように SSL アクションを設定します

クライアントのhelloメッセージを解析する場合、Citrix ADCアプライアンスは、SSLポリシーに関連付けられたSSL転送アクションを使用してクライアントトラフィックを転送できます。ポリシーは、クライアントhello要求バインドポイントで仮想サーバーにバインドされます。次のセクションでは、転送を使用できるいくつかのユースケースについて説明します。Citrix ADCアプライアンス上で暗号がサポートされていない場合のSSL転送アクションの構成の詳細については、「 ADCで暗号がサポートされていない場合にクライアントトラフィックを転送するようにSSLアクションを構成する」を参照してください。

次の図は、トラフィックフローを示しています。この図ではフォワード仮想サーバーはタイプSSL_TCPです。

SSLフォワードアクショントラフィックフロー

  1. クライアントはSSLハンドシェイクを開始し、クライアントのhelloメッセージをADCアプライアンスに送信します。
  2. アプライアンスは、クライアントhelloメッセージのパラメータを使用して、設定されたポリシーを評価します。
  3. ポリシーがfalseと評価された場合、復号化されたトラフィックはHTTPサービスに転送されてから、バックエンドサーバーに転送されます。
  4. ポリシーがtrueと評価された場合、トラフィックはアクションで定義された転送仮想サーバーに転送されます。
  5. フォワード仮想サーバーは、クライアントとのハンドシェイクを完了します。
  6. ポリシールールを満たすすべてのトラフィックは、転送仮想サーバーにバインドされたサービスを介してバックエンドサービスに転送されます。

アプライアンスにドメイン固有(SNI)証明書がない場合に、クライアントトラフィックを転送するように SSL アクションを設定します

注: この機能は、リリース 12.1 ビルド 49.x 以降で使用できます。

クライアントのhelloメッセージで、アプライアンスで証明書を使用できないドメインの要求を受け取る場合があります。この場合、クライアントトラフィックを別の仮想サーバーに転送するようにSSLアクションを構成できます。次の例では、SSL 仮想サーバーを転送仮想サーバーとして設定しています。この設定により、元の仮想サーバーに SNI 証明書がないために失敗したすべての接続が、転送仮想サーバーで正常に実行されるようになります。

次の手順を実行します。

  1. SSL タイプの負荷分散仮想サーバーを追加します (たとえば、vMain)。クライアントトラフィックは、この仮想サーバで受信されます。
  2. サーバー証明書とCA証明書を追加し、SSL仮想サーバーにバインドします。
  3. ポート 443 で SSL サービスを追加します。
  4. このサービスを SSL 仮想サーバーにバインドします。
  5. トラフィックの転送先となるタイプの SSL/SSL_TCP/TCP/SSL_BRIDGEのロードバランシング仮想サーバをもう 1 つ追加します。(たとえば、 fwd-vserver)。
  6. サービスを追加し、この仮想サーバーにバインドします。
  7. 「forward」パラメータにSSL 仮想サーバfwd-vserverを指定する SSL転送アクションを追加します。
  8. クライアント hello メッセージで特定のドメイン名(SNI)を受信した場合に、前述のアクションを指定する SSL ポリシー(pol-ssl-sniなど)を追加します。
  9. このポリシーをCLIENTHELLO_REQのSSL 仮想サーバーにバインドします。
  10. 構成を保存します。

CLI を使用した設定

トラフィックの転送先となる SSL 仮想サーバの設定

add lb vserver fwd-vserver SSL 198.51.100.20 443
add ssl certkey sv -cert complete/server/server_rsa_2048.pem -key complete/server/server_rsa_2048.ky
add ssl certkey cacert -cert SHA256-RSA-PEM_512.pem -key SHA256-RSA-PEM_512.ky
bind ssl vserver fwd-vserver -certkeyName sv
bind ssl vserver fwd-vserver -certkeyName cacert -CA
add service ssl-service2 198.51.100.18 SSL 443
bind lb vserver fwd-vserver ssl-service2
<!--NeedCopy-->

最初にクライアントトラフィックを受信する SSL 仮想サーバの設定

add service ssl-service 198.51.100.5 SSL 443
add lb vserver vMain SSL 198.51.100.25 443
bind ssl vserver vMain -certkeyName sv
bind lb vserver vMain ssl-service
set ssl vserver vMain -sni ENABLED
add ssl certKey snicert2 -cert /nsconfig/ssl/complete/SNI/server/serverabc.pem -key /nsconfig/ssl/complete/SNI/server/serverabc.ky
add ssl certKey snicert -cert /nsconfig/ssl/complete/SNI/server/serverabcnetscaler.pem -key /nsconfig/ssl/complete/SNI/server/serverabcnetscaler.ky
bind ssl vserver vMain -certkeyName snicert -sniCert
bind ssl vserver vMain -certkeyName snicert2 -sniCert
<!--NeedCopy-->

SSL 仮想サーバ vMainのポリシー設定

add ssl action act_ssl_fwd -forward fwd-vserver
add ssl policy pol-ssl-sni -rule client.ssl.client_hello.sni.contains("xyz") -action act_ssl_fwd
bind ssl vserver vMain -policyName pol-ssl-sni -type CLIENTHELLO_REQ -priority 1
<!--NeedCopy-->
sh ssl vserver vMain

    Advanced SSL configuration for VServer vMain:
    DH: DISABLED
    DH Private-Key Exponent Size Limit: DISABLED    Ephemeral RSA: ENABLED  Refresh Count: 0
    Session Reuse: ENABLED  Timeout: 120 seconds
    Cipher Redirect: DISABLED
    SSLfwd-vserver Redirect: DISABLED
    ClearText Port: 0
    Client Auth: DISABLED
    SSL Redirect: DISABLED
    Non FIPS Ciphers: DISABLED
    SNI: ENABLED
    OCSP Stapling: DISABLED
    HSTS: DISABLED
    HSTS IncludeSubDomains: NO
    HSTS Max-Age: 0
    SSLfwd-vserver: DISABLED  SSLv3: ENABLED  TLSv1.0: ENABLED  TLSv1.1: ENABLED  TLSv1.2: ENABLED  TLSv1.3: DISABLED
    Push Encryption Trigger: Always
    Send Close-Notify: YES
    Strict Sig-Digest Check: DISABLED
    Zero RTT Early Data: DISABLED
    DHE Key Exchange With PSK: NO
    Tickets Per Authentication Context: 1

ECC Curve: P_256, P_384, P_224, P_521

1)  CertKey Name: sv    Server Certificate
2)  CertKey Name: snicert2  Server Certificate for SNI
3)  CertKey Name: snicert   Server Certificate for SNI


Data policy
1) Policy Name: pol-ssl-sni    Priority: 1



1) Cipher Name: DEFAULT
Description: Default cipher list with encryption strength >= 128bit
Done
<!--NeedCopy-->
sh ssl policy pol-ssl-sni
    Name: pol-ssl-sni
    Rule: client.ssl.client_hello.sni.contains("xyz")
    Action: act_ssl_fwd
    UndefAction: Use Global
    Hits: 0
    Undef Hits: 0


    Policy is bound to following entities
1)  Bound to: CLIENTHELLO_REQ VSERVER v1
    Priority: 1

Done
<!--NeedCopy-->
sh ssl action act_ssl_fwd
1)  Name: act_ssl_fwd
    Type: Data Insertion
    Forward to: fwd-vserver
    Hits: 0
    Undef Hits: 0
    Action Reference Count: 1
Done
<!--NeedCopy-->
sh ssl vserver fwd-vserver

    Advanced SSL configuration for VServer fwd-vserver:
    DH: DISABLED
    DH Private-Key Exponent Size Limit: DISABLED    Ephemeral RSA: ENABLED  Refresh Count: 0
    Session Reuse: ENABLED  Timeout: 120 seconds
    Cipher Redirect: DISABLED
    SSLfwd-vserver Redirect: DISABLED
    ClearText Port: 0
    Client Auth: DISABLED
    SSL Redirect: DISABLED
    Non FIPS Ciphers: DISABLED
    SNI: DISABLED
    OCSP Stapling: DISABLED
    HSTS: DISABLED
    HSTS IncludeSubDomains: NO
    HSTS Max-Age: 0
    SSLfwd-vserver: DISABLED  SSLv3: ENABLED  TLSv1.0: ENABLED  TLSv1.1: ENABLED  TLSv1.2: ENABLED  TLSv1.3: DISABLED
    Push Encryption Trigger: Always
    Send Close-Notify: YES
    Strict Sig-Digest Check: DISABLED
    Zero RTT Early Data: DISABLED
    DHE Key Exchange With PSK: NO
    Tickets Per Authentication Context: 1

    ECC Curve: P_256, P_384, P_224, P_521

1)  CertKey Name: sv    Server Certificate



1)  Cipher Name: DEFAULT
    Description: Default cipher list with encryption strength >= 128bit
Done

<!--NeedCopy-->

クライアント hello メッセージの ALPN 拡張内のアプリケーションプロトコルに基づいてクライアントトラフィックを転送するように SSL アクションを設定します

注: この機能は、リリース 13.0 ビルド 61.x 以降でサポートされています。

Citrix ADCアプライアンスは、ポリシー評価のためにメッセージを解析しながら、クライアントhelloメッセージのALPN拡張で着信するプロトコルを識別できます。クライアント hello メッセージの ALPN 拡張内のプロトコルを識別する規則はclient.ssl.client_hello.alpn.has_nextprotocol<protocol_name>です。「転送」タイプのSSLアクションをポリシーに関連付けて、パケットを転送仮想サーバーに転送します。この転送仮想サーバーの種類は、SSL、SSL_TCP、SSL_BRIDGE、またはあTCPです。

SSL_TCP仮想サーバーで処理された接続のALPN拡張でアプリケーションプロトコルをネゴシエートするために、パラメーター alpnProtocolがフロントエンドSSLプロファイルに追加されます。パラメータでサポートされている値は、HTTP1.1、HTTP2、またはNONE(デフォルト値)です。クライアントhelloメッセージのALPN拡張で同じプロトコルが受信された場合、SSLプロファイルで指定されたプロトコルのみがネゴシエートされます。ポリシー評価でサポートされるALPN拡張の最大長は4096バイトです。

ALPN拡張機能にHTTP2プロトコルを含むすべてのリクエストをSSL_TCP 仮想サーバーに転送するためのサンプル設定

トラフィックを転送する SSL_TCP 仮想サーバはfwd-vserver-1です。

トラフィックの転送先となる SSL 仮想サーバの設定

add lb vserver fwd-vserver-1 SSL_TCP 198.51.100.20 443
add ssl certkey sv -cert complete/server/server_rsa_2048.pem -key complete/server/server_rsa_2048.ky
add ssl certkey rootCA -cert SHA256-RSA-PEM_512.pem -key SHA256-RSA-PEM_512.ky
bind ssl vserver fwd-vserver-1 -certkeyName sv
bind ssl vserver fwd-vserver-1 -certkeyName rootCA -CA
add service ssl-tcp-service 198.51.100.14 SSL_TCP 443
bind lb vserver fwd-vserver-1 ssl-tcp-service
<!--NeedCopy-->

最初にクライアントトラフィックを受信する SSL 仮想サーバの設定

add service ssl-service 198.51.100.5 SSL 443
add lb vserver vMain-alpn SSL 198.51.100.25 443
bind ssl vserver vMain-alpn -certkeyName sv
bind lb vserver vMain-alpn ssl-service
<!--NeedCopy-->

SSL 仮想サーバ vmain-ALPN のポリシー設定

add ssl action forward-action-alpn -forward fwd-vserver-1
add ssl policy pol-ssl-alpn -rule "client.ssl.client_hello.alpn.has_nextprotocol("h2")" -action forward-action-alpn
bind ssl vserver VMain-alpn -policyName pol-ssl-alpn -priority 2 -type CLIENTHELLO_REQ
<!--NeedCopy-->
sh ssl vserver vMain-alpn

    Advanced SSL configuration for VServer vMain-alpn:
    DH: DISABLED
    DH Private-Key Exponent Size Limit: DISABLED    Ephemeral RSA: ENABLED  Refresh Count: 0
    Session Reuse: ENABLED  Timeout: 120 seconds
    Cipher Redirect: DISABLED
    ClearText Port: 0
    Client Auth: DISABLED
    SSL Redirect: DISABLED
    Non FIPS Ciphers: DISABLED
    SNI: DISABLED
    OCSP Stapling: DISABLED
    HSTS: DISABLED
    HSTS IncludeSubDomains: NO
    HSTS Max-Age: 0
    HSTS Preload: NO
    SSLv3: ENABLED  TLSv1.0: ENABLED  TLSv1.1: ENABLED  TLSv1.2: ENABLED  TLSv1.3: DISABLED
    Push Encryption Trigger: Always
    Send Close-Notify: YES
    Strict Sig-Digest Check: DISABLED
    Zero RTT Early Data: DISABLED
    DHE Key Exchange With PSK: NO
    Tickets Per Authentication Context: 1

    ECC Curve: P_256, P_384, P_224, P_521

1)  CertKey Name: sv    Server Certificate


    Data policy
1)  Policy Name: pol-ssl-alpn   Priority: 2



1)  Cipher Name: DEFAULT
    Description: Default cipher list with encryption strength >= 128bit
 Done
<!--NeedCopy-->
sh ssl policy pol-ssl-alpn
    Name: pol-ssl-alpn
    Rule: client.ssl.client_hello.alpn.has_nextprotocol("h2")
    Action: forward-action-alpn
    UndefAction: Use Global
    Hits: 0
    Undef Hits: 0


    Policy is bound to following entities
1)  Bound to: CLIENTHELLO_REQ VSERVER VMain-alpn
    Priority: 2

 Done
<!--NeedCopy-->
sh ssl action forward-action-alpn
1)  Name: forward-action-alpn
    Type: Data Insertion
    Forward to: fwd-vserver-1
    Hits: 0
    Undef Hits: 0
    Action Reference Count: 1
 Done
<!--NeedCopy-->
sh ssl vserver fwd-vserver-1
    Advanced SSL configuration for VServer fwd-vserver-1:
    DH: DISABLED
    DH Private-Key Exponent Size Limit: DISABLED    Ephemeral RSA: ENABLED  Refresh Count: 0
    Session Reuse: ENABLED  Timeout: 120 seconds
    Cipher Redirect: DISABLED
    ClearText Port: 0
    Client Auth: DISABLED
    SSL Redirect: DISABLED
    Non FIPS Ciphers: DISABLED
    SNI: DISABLED
    OCSP Stapling: DISABLED
    HSTS: DISABLED
    HSTS IncludeSubDomains: NO
    HSTS Max-Age: 0
    HSTS Preload: NO
    SSLv3: ENABLED  TLSv1.0: ENABLED  TLSv1.1: ENABLED  TLSv1.2: ENABLED  TLSv1.3: DISABLED
    Push Encryption Trigger: Always
    Send Close-Notify: YES
    Strict Sig-Digest Check: DISABLED
    Zero RTT Early Data: DISABLED
    DHE Key Exchange With PSK: NO
    Tickets Per Authentication Context: 1

    ECC Curve: P_256, P_384, P_224, P_521

1)  CertKey Name: sv    Server Certificate
2)  CertKey Name: rootCA    CA Certificate  OCSPCheck: Optional CA_Name Sent



1)  Cipher Name: DEFAULT
    Description: Default cipher list with encryption strength >= 128bit
 Done
 <!--NeedCopy-->