Citrix ADC

SSLによる負荷分散トラフィックのセキュリティ保護

Citrix ADC SSLオフロード機能は、SSLトランザクションを行うWebサイトのパフォーマンスを、透過的に向上させます。SSLオフロードでは、CPU負荷の高いSSL暗号化および復号化タスクをローカルWebサーバーからアプライアンスにオフロードすることにより、SSLデータの処理によるサーバーパフォーマンスの低下を引き起こすことなく、Webアプリケーションを安全に配信できます。SSLトラフィックを復号化すると、あらゆる標準サービスで処理できるようになります。SSLプロトコルは、さまざまな種類のHTTPおよびTCPデータとシームレスに機能して、このようなデータを使用するトランザクションに、セキュリティ保護されたチャネルを提供します。

SSLを設定するには、まずSSLを有効にする必要があります。次に、アプライアンスでHTTPまたはTCPサービスおよびSSL仮想サーバーを構成し、そのサービスを仮想サーバーにバインドします。証明書とキーのペアを追加してSSL仮想サーバーにバインドする必要もあります。Outlook Web Accessサーバーを使用する場合は、SSLサポートを有効にするアクションとそのアクションに適用するポリシーを作成する必要があります。SSL仮想サーバーは、暗号化された着信トラフィックをインターセプトして、ネゴシエートしたアルゴリズムを使用してそのトラフィックを復号化します。復号化されたデータは、アプライアンス上のほかのエンティティに転送され、適切に処理されます。

SSL オフロードの詳細については、 SSL オフロードとアクセラレーションを参照してください

SSLを設定するタスクの順序

SSLを設定するには、まずSSLを有効にする必要があります。次に、Citrix ADCアプライアンスでSSL仮想サーバーとHTTPまたはTCPサービスを作成する必要があります。最後に、有効なSSL証明書と設定済みのサービスを、SSL仮想サーバーにバインドする必要があります。

SSL仮想サーバーは、暗号化された着信トラフィックを傍受して、ネゴシエートしたアルゴリズムを使用してそのトラフィックを解読します。復号化されたデータは、Citrix ADCアプライアンス上のほかのエンティティに転送され、適切に処理されます。

次のフローチャートには、基本的なSSLオフロードセットアップを設定するタスクの順序が示されています。

図1:SSLオフロードを構成するための一連のタスク

SSLフローチャート

SSLオフロードを有効にする

まず、SSL機能を有効にします。SSL機能を有効にしなくてもアプライアンス上でSSLベースのエンティティを設定できますが、それらのエンティティはSSLを有効にするまで動作しません。

CLIを使用してSSLを有効にする

コマンドプロンプトで次のコマンドを入力し、SSLオフロードを有効にして構成を確認します。

-  enable ns feature SSL
-  show ns feature
<!--NeedCopy-->

例:

> enable ns feature ssl

Done


> show ns feature


Feature Acronym Status


------- ------- ------


1) Web Logging WL ON


2) SurgeProtection SP OFF


3) Load Balancing LB ON . . .


 9) SSL Offloading SSL ON


10) Global Server Load Balancing GSLB ON . .


Done >
<!--NeedCopy-->

GUIを使用してSSLを有効にする

次の手順を実行します:

  1. ナビゲーションペインで、[System] を展開し、[Settings] をクリックします。
  2. 詳細ペインの[Modes and Features]で、[Change basic features]をクリックします。
  3. [SSL Offloading]チェックボックスをオンにして、[OK]をクリックします。
  4. [Enable/Disable Feature(s)?]ダイアログボックスで、[Yes]をクリックします。

HTTPサービスを作成する

アプライアンス上の各サービスは、サーバー上の個々のアプリケーションとして機能します。構成したサービスは、アプライアンスがネットワーク上のサーバーにアクセスしてその状態を監視できるようになるまで無効状態になります。このトピックでは、HTTPサービスを作成する手順について説明します。

注:TCPトラフィックの場合、次の手順を実行しますが、HTTPサービスの代わりにTCPサービスを作成します。

CLIを使用してHTTPサービスを追加します

コマンドプロンプトで次のコマンドを入力し、HTTPサービスを追加して構成を確認します。

-  add service <name> (<IP> | <serverName>) <serviceType> <port>
-  show service <name>
<!--NeedCopy-->

例:

> add service SVC_HTTP1 10.102.29.18 HTTP 80


 Done


> show service SVC_HTTP1


        SVC_HTTP1 (10.102.29.18:80) - HTTP


        State: UP


        Last state change was at Wed Jul 15 06:13:05 2009


        Time since last state change: 0 days, 00:00:15.350


        Server Name: 10.102.29.18


        Server ID : 0   Monitor Threshold : 0


        Max Conn: 0     Max Req: 0      Max Bandwidth: 0 kbits


        Use Source IP: NO


        Client Keepalive(CKA): NO


        Access Down Service: NO


        TCP Buffering(TCPB): NO


        HTTP Compression(CMP): YES


        Idle timeout: Client: 180 sec   Server: 360 sec


        Client IP: DISABLED


        Cacheable: NO


        SC: OFF


        SP: OFF


        Down state flush: ENABLED





1)      Monitor Name: tcp-default


                State: UP       Weight: 1


                Probes: 4       Failed [Total: 0 Current: 0]


                Last response: Success - TCP syn+ack received.


                Response Time: N/A


 Done
<!--NeedCopy-->

GUIを使用してHTTPサービスを追加します

次の手順を実行します:

  1. [Traffic Management]>[SSL Offload]>[Servers] の順に選択します。
  2. 詳細ペインで、[Add] をクリックします。
  3. [Create Service] ダイアログボックスで、サービスの名前、IPアドレス、およびポートを入力します(たとえば、SVC_HTTP1, 10.102.29.18、および80)。
  4. [Protocol] ボックスの一覧で、サービスの種類(ここでは[HTTP])を選択します。
  5. [Create] をクリックしてから、[Close] をクリックします。構成したHTTPサービスが、[Services]ページに表示されます。
  6. 作成したサービスを選択して、ペインの下部にある[Details]セクションを表示し、パラメーターが正しく構成されていることを確認します。

SSLベースの仮想サーバーを追加する

基本的なSSLオフロードセットアップでは、SSL仮想サーバーは暗号化されたトラフィックをインターセプトおよび復号化して、仮想サーバーにバインドされているサービスにクリアテキストメッセージを送信します。CPU負荷の高いSSL処理をアプライアンス側にオフロードすると、バックエンドサーバーでより多くの要求を処理できるようになります。

CLIを使用してSSLベースの仮想サーバーを追加します

コマンドプロンプトで次のコマンドを入力し、SSLベースの仮想サーバーを追加して構成を確認します。

-  add lb vserver <name> <serviceType> [<IPAddress> <port>]
-  show lb vserver <name>
<!--NeedCopy-->

注意: 安全に接続するには、SSLベースの仮想サーバーを有効にする前に、有効なSSL証明書をSSLベースの仮想サーバーにバインドする必要があります。

例:

> add lb vserver vserver-SSL-1 SSL 10.102.29.50 443
  Done


  > show lb vserver vserver-SSL-1


  vserver-SSL-1 (10.102.29.50:443) - SSL Type: ADDRESS


  State: DOWN[Certkey not bound] Last state change was at Tue Jun 16 06:33:08 2009 (+176 ms)


  Time since last state change: 0 days, 00:03:44.120


  Effective State: DOWN Client Idle Timeout: 180 sec


  Down state flush: ENABLED


  Disable Primary Vserver On Down : DISABLED


  No. of Bound Services : 0 (Total) 0 (Active)


  Configured Method: LEASTCONNECTION Mode: IP


  Persistence: NONE


  Vserver IP and Port insertion: OFF


  Push: DISABLED Push VServer: Push Multi Clients: NO Push Label Rule: Done
<!--NeedCopy-->

GUIを使用してSSLベースの仮想サーバーを追加します

次の手順を実行します:

  1. [Traffic Management]>[SSL Offload]>[Virtual Servers] の順に選択します。
  2. 詳細ペインで、[Add] をクリックします。
  3. [Create Virtual Server (SSL Offload)] ダイアログボックスで、仮想サーバーの名前、IPアドレス、およびポートを入力します。
  4. [Protocol] ボックスの一覧で、仮想サーバーの種類(たとえば、[SSL])を選択します。
  5. [Create] をクリックしてから、[Close] をクリックします。
  6. 作成した仮想サーバーを選択して、ペインの下部にある[Details]セクションを表示し、パラメーターが正しく構成されていることを確認します。証明書とキーのペアとサービスが仮想サーバーにバインドされていないため、仮想サーバーはDOWNとしてマークされます。

注意: 安全に接続するには、SSLベースの仮想サーバーを有効にする前に、有効なSSL証明書をSSLベースの仮想サーバーにバインドする必要があります。

サービスのSSL仮想サーバーへのバインド

SSL仮想サーバーが復号化した受信データは、その仮想サーバーにバインドされたサービスに転送されます。

アプライアンスとサーバーの間のデータ転送は、暗号化したりクリアテキストで送信したりできます。アプライアンスとサーバーの間のデータ転送を暗号化する場合、トランザクション全体がエンドツーエンドで保護されることになります。エンドツーエンドのセキュリティのためのシステムの構成の詳細については、「 SSL オフロードとアクセラレーション」を参照してください。

CLIを使用してサービスを仮想サーバーにバインドします

コマンドプロンプトで次のコマンドを入力し、サービスをSSL仮想サーバーにバインドして構成を確認します。

-  bind lb vserver <name> <serviceName>
-  show lb vserver <name>
<!--NeedCopy-->

:

> bind lb vserver vserver-SSL-1 SVC_HTTP1




  Done


  > show lb vserver vserver-SSL-1 vserver-SSL-1 (10.102.29.50:443) - SSL Type:


  ADDRESS State: DOWN[Certkey not bound]


  Last state change was at Tue Jun 16 06:33:08 2009 (+174 ms)


  Time since last state change: 0 days, 00:31:53.70


  Effective State: DOWN Client Idle


  Timeout: 180 sec


  Down state flush: ENABLED Disable Primary Vserver On Down :


  DISABLED No. of Bound Services : 1 (Total) 0 (Active)


  Configured Method: LEASTCONNECTION Mode: IP Persistence: NONE Vserver IP and


  Port insertion: OFF Push: DISABLED Push VServer: Push Multi Clients: NO Push Label Rule:





  1) SVC_HTTP1 (10.102.29.18: 80) - HTTP


  State: DOWN Weight: 1


  Done
<!--NeedCopy-->

GUIを使用してサービスを仮想サーバーにバインドする

  1. [Traffic Management]>[SSL Offload]>[Virtual Servers] の順に選択します。
  2. 詳細ペインで仮想サーバーを選択して、[Open]をクリックします。
  3. [Services]タブの[Active]列で、選択した仮想サーバーにバインドするサービスの横にあるチェックボックスをオンにします。
  4. OK」をクリックします。
  5. ペインの下部にある[Details]セクションの[Number of Bound Services ]カウンターが、仮想サーバーにバインドしたサービスの数だけ増加することを確認します。

証明書とキーのペアを追加します

SSL証明書は、SSLキー交換および暗号化/復号化プロセスに含まれるエレメントです。証明書は、SSLサーバーのアイデンティティを確立するためにSSLハンドシェイク中に使用されます。Citrix ADCアプライアンスに含まれている、有効な既存のSSL証明書を使用するか、独自のSSL証明書を作成できます。アプライアンスは、最大 4096 ビットの RSA 証明書をサポートします。

次の曲線のみを持つ ECDSA 証明書がサポートされています。

  • prime256v1 (ADCではP_256)
  • secp384r1 (ADCではP_384)
  • secp521r1 (ADC では P_521、VPX でのみサポート)
  • secp224r1 (ADC では P_224、VPX でのみサポート)

注:信頼される証明機関から発行された有効なSSL証明書を使用することをお勧めします。無効な証明書や自分で作成した証明書は、一部のSSLクライアントと互換性がありません。

SSL処理に使用する前に、証明書を対応するキーとペアにする必要があります。次に、証明書とキーのペアを仮想サーバーにバインドすると、SSL処理に使用できるようになります。

CLIを使用して証明書キーペアを追加します

注: ECDSA 証明書とキーのペアの作成については、「 ECDSA 証明書とキーペアの作成」を参照してください。

コマンドプロンプトで次のコマンドを入力し、証明書とキーのペアを作成して構成を確認します。

-  add ssl certKey <certkeyName> -cert <string> [-key <string>]
-  show sslcertkey <name>
<!--NeedCopy-->

例:

> add ssl certKey CertKey-SSL-1 -cert ns-root.cert -key ns-root.key

 Done


> show sslcertkey CertKey-SSL-1


   Name: CertKey-SSL-1 Status: Valid,


   Days to expiration:4811 Version: 3


   Serial Number: 00 Signature Algorithm: md5WithRSAEncryption Issuer: C=US,ST=California,L=San


   Jose,O=Citrix ANG,OU=NS Internal,CN=de fault


   Validity Not Before: Oct 6 06:52:07 2006 GMT Not After : Aug 17 21:26:47 2022 GMT


   Subject: C=US,ST=California,L=San Jose,O=Citrix ANG,OU=NS Internal,CN=d efault Public Key


   Algorithm: rsaEncryption Public Key


   size: 1024


 Done
<!--NeedCopy-->

GUIを使用して証明書キーペアを追加します

次の手順を実行します:

  1. [Traffic Management ]> [SSL] > [Certificates] に移動します。
  2. 詳細ペインで、[Add] をクリックします。
  3. [Install Certificate] ダイアログボックスの[Certificate-Key Pair Name]ボックスに、追加する証明書とキーのペアの名前(たとえば、「Certkey-SSL-1」)を入力します。
  4. [Details] の[Certificate File Name]で、[Browse (Appliance)] をクリックして証明書を検索します。証明書とキーはともに、アプライアンスの/nsconfig/ssl/ディレクトリに保存されます。ローカルシステムにある証明書を使用するには、[Local]を選択します。
  5. 使用する証明書を選択して、[Select]をクリックします。
  6. [Private Key File Name]で、[Browse (Appliance)] をクリックして秘密キーファイルを検索します。ローカルシステムにある秘密キーを使用するには、[Local]を選択します。
  7. 使用するキーを選択して、[Select] をクリックします。証明書とキーのペアで使用するキーを暗号化するには、暗号化に使用するパスワードを[Password]ボックスに入力します。
  8. [インストール] をクリックします。
  9. 証明書キーのペアをダブルクリックし、[証明書の詳細]ウィンドウで、パラメーターが正しく構成されて保存されていることを確認します。

SSL証明書キーペアの仮想サーバーへのバインド

SSL証明書とそれに対応するキーをペアにしたら、証明書とキーのペアをSSL仮想サーバーにバインドして、SSL処理に使用できるようにする必要があります。セキュリティで保護されたセッションでは、クライアントコンピューターとアプライアンス上のSSLベースの仮想サーバーの間に接続を確立する必要があります。その後、仮想サーバーで着信トラフィックに対してSSL処理が実行されます。したがって、アプライアンスでSSL仮想サーバーを有効にする前に、有効なSSL証明書をSSL仮想サーバーにバインドする必要があります。

CLIを使用して、SSL証明書キーペアを仮想サーバーにバインドします

コマンドプロンプトで次のコマンドを入力し、SSL証明書とキーのペアを仮想サーバーにバインドして構成を確認します。

-  bind ssl vserver <vServerName> -certkeyName <string>
-  show ssl vserver <name>
<!--NeedCopy-->

例:

> bind ssl vserver Vserver-SSL-1 -certkeyName CertKey-SSL-1

Done


> show ssl vserver Vserver-SSL-1





     Advanced SSL configuration for VServer Vserver-SSL-1:


     DH: DISABLED


     Ephemeral RSA: ENABLED Refresh Count: 0


     Session Reuse: ENABLED Timeout: 120 seconds


     Cipher Redirect: ENABLED


     SSLv2 Redirect: ENABLED


     ClearText Port: 0


     Client Auth: DISABLED


     SSL Redirect: DISABLED


     Non FIPS Ciphers: DISABLED


     SSLv2: DISABLED SSLv3: ENABLED TLSv1: ENABLED





1) CertKey Name: CertKey-SSL-1 Server Certificate


1) Cipher Name: DEFAULT


   Description: Predefined Cipher Alias


Done
<!--NeedCopy-->

GUIを使用して、SSL証明書キーペアを仮想サーバーにバインドします

次の手順を実行します:

  1. [Traffic Management]>[SSL Offload]>[Virtual Servers] の順に選択します。
  2. 証明書とキーのペアをバインドする仮想サーバー(たとえば、[Vserver-SSL-1])を選択して、[Open]をクリックします。
  3. [Configure Virtual Server (SSL Offload)] ダイアログボックスの [SSL Settings] タブにある [Available] で、仮想サーバーにバインドする証明書とキーのペアを選択します。次に、[追加] をクリックします。
  4. OK」をクリックします。
  5. 選択した証明書キーのペアが[Configured]領域に表示されていることを確認します。

Outlook Web Accessに対するサポートの構成

Citrix ADCアプライアンスでOutlook Web Access(OWA)サーバーを使用している場合は、OWAサーバー宛のHTTP要求に特別なヘッダーフィールド「FRONT-END-HTTPS: ON」を挿入するようにアプライアンスを構成して、URLリンクが「http://」ではなく「https://」として生成されるようにします。

注: OWAサポートは、HTTPベースのSSL仮想サーバーとSSLサービスで有効にできます。TCPベースのSSL仮想サーバーとSSLサービスではOWAをサポートできません。

OWAサポートを構成するには、次の操作を実行します。

  • OWAサポートを有効にするSSLアクションを作成します。
  • SSLポリシーを作成します。
  • ポリシーをSSL仮想サーバーにバインドします。

OWAサポートを有効にするSSLアクションを作成します

Outlook Web Access(OWA)サポートを有効にする前に、SSLアクションを作成する必要があります。SSLアクションはSSLポリシーにバインドされ、着信データがポリシーで指定された規則と一致すると実行されます。

CLIを使用してOWAサポートを有効にするSSLアクションを作成します

コマンドプロンプトで次のコマンドを入力し、OWAサポートを有効にするSSLアクションを作成して構成を確認します。

-  add ssl action <name> -OWASupport ENABLED
-  show SSL action <name>
<!--NeedCopy-->

例:

    > add ssl action Action-SSL-OWA -OWASupport enabled




    Done


    > show SSL action Action-SSL-OWA


    Name: Action-SSL-OWA


    Data Insertion Action: OWA


    Support: ENABLED


    Done
<!--NeedCopy-->

GUIを使用してOWAサポートを有効にするSSLアクションを作成します

次の手順を実行します:

  1. [Traffic Management]>[SSL]>[Policies] に移動します。
  2. 詳細ペインで、[Actions] タブ、[Add] をクリックします。
  3. [Create SSL Action] ダイアログボックスの[Name]ボックスに、「Action-SSL-OWA」と入力します。
  4. [Outlook Web Access]で、[Enabled] を選択します。
  5. [Create] をクリックしてから、[Close] をクリックします。
  6. [Action-SSL-OWA]が [SSL Actions] ページに表示されていることを確認します。

SSLポリシーを作成する

SSLポリシーは、ポリシーインフラストラクチャを使用して作成します。各SSLポリシーにはSSLアクションがバインドされ、アクションは、着信トラフィックがポリシーで設定された規則と一致すると実行されます。

CLIを使用してSSLポリシーを作成します

コマンドプロンプトで次のコマンドを入力し、SSLポリシーを作成して構成を確認します。

-  add ssl policy <name> -rule <expression> -reqAction <string>
-  show ssl policy <name>
<!--NeedCopy-->

例:

> add ssl policy-SSL-1 -rule ns_true -reqaction Action-SSL-OWA

Done

> show ssl policy-SSL-1

Name: Policy-SSL-1 Rule: ns_true

Action: Action-SSL-OWA Hits: 0

Policy is bound to following entities

1) PRIORITY : 0

Done
<!--NeedCopy-->

GUIを使用してSSLポリシーを作成します

次の手順を実行します:

  1. [Traffic Management]>[SSL]>[Policies] に移動します。
  2. 詳細ペインで、[Add] をクリックします。
  3. [Create SSL Policy] ダイアログボックスの[Name]ボックスに、SSLポリシーの名前(たとえば、「Policy-SSL-1」)を入力します。
  4. [Request Action]で、このポリシーに関連付ける既存のSSLアクション(たとえば、[Action-SSL-OWA])を選択します。ns_true汎用式により、成功したSSLハンドシェイクトラフィックのすべてにこのポリシーが適用されます。特定の応答に対してのみポリシーを適用する場合は、より高い詳細レベルのポリシーを作成できます。詳細なポリシー式の構成の詳細については、「 SSL アクションとポリシー」を参照してください。
  5. [Named Expressions] で、組み込みの汎用式ns_trueを選択し、[Add Expression] をクリックします。式ns_trueが[Expression]ボックスに表示されます。
  6. [Create] をクリックしてから、[Close] をクリックします。
  7. ポリシーを選択して、ペイン下部にある[Details]セクションを表示し、ポリシーが正しく構成されていることを確認します。

SSLポリシーをSSL仮想サーバーにバインドします

Outlook Web AccessにSSLポリシーを設定したら、Outlook着信トラフィックをインターセプトする仮想サーバーにポリシーをバインドします。着信データがSSLポリシーで構成された規則と一致すると、そのポリシーに関連付けられたアクションが実行されます。

CLIを使用してSSLポリシーをSSL仮想サーバーにバインドします

コマンドプロンプトで次のコマンドを入力し、SSLポリシーをSSL仮想サーバーにバインドして構成を確認します。

-  bind ssl vserver <vServerName> -policyName <string>
-  show ssl vserver <name>
<!--NeedCopy-->

例:

> bind ssl vserver Vserver-SSL-1 -policyName Policy-SSL-1

 Done

> show ssl vserver Vserver-SSL-1

Advanced SSL configuration for VServer Vserver-SSL-1:

DH: DISABLED

Ephemeral RSA: ENABLED

Refresh Count: 0

Session Reuse: ENABLED

Timeout: 120 seconds

Cipher Redirect: ENABLED

SSLv2 Redirect: ENABLED

ClearText Port: 0

Client Auth: DISABLED

SSL Redirect: DISABLED

Non FIPS Ciphers: DISABLED

SSLv2: DISABLED SSLv3: ENABLED TLSv1: ENABLED

1) CertKey Name: CertKey-SSL-1 Server Certificate

1) Policy Name: Policy-SSL-1 Priority: 0

1) Cipher Name: DEFAULT Description: Predefined Cipher Alias

Done
<!--NeedCopy-->

GUIを使用してSSLポリシーをSSL仮想サーバーにバインドします

次の手順を実行します:

  1. [Traffic Management]>[SSL Offload]>[Virtual Servers] の順に選択します。
  2. 詳細ペインで仮想サーバー(たとえば、[Vserver-SSL-1])を選択して、[Open] をクリックします。
  3. [Configure Virtual Server (SSL Offload)]ダイアログボックスで[Insert Policy]をクリックし、SSL仮想サーバーにバインドするポリシーを選択します。必要に応じて、[Priority]ボックスをダブルクリックして、新しい優先度を入力することもできます。
  4. OK」をクリックします。