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を設定するには、まず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
> 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を有効にする
- ナビゲーションペインで、[System] を展開し、[Settings] をクリックします。
- 詳細ペインの[Modes and Features]で、[Change basic features]をクリックします。
- [SSL Offloading]チェックボックスをオンにして、[OK]をクリックします。
- [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サービスを追加します
次の手順を実行します:
- [Traffic Management]>[SSL Offload]>[Servers] の順に選択します。
- 詳細ペインで、[Add] をクリックします。
- [Create Service] ダイアログボックスの[Service Name]、[Server]、および[Port]ボックスに、それぞれサービスの名前、IPアドレス、およびポート(たとえば、「SVC_HTTP1」、「10.102.29.18」、「80」)を入力します。
- [Protocol] ボックスの一覧で、サービスの種類(ここでは[HTTP])を選択します。
- [Create] をクリックしてから、[Close] をクリックします。構成したHTTPサービスが、[Services]ページに表示されます。
- 作成したサービスを選択して、ペインの下部にある[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ベースの仮想サーバーを追加します
次の手順を実行します:
- [Traffic Management]>[SSL Offload]>[Virtual Servers] の順に選択します。
- 詳細ペインで、[Add] をクリックします。
- [Create Virtual Server (SSL Offload)] ダイアログボックスの[Name]、[IP Address]、および[Port]ボックスに、それぞれ仮想サーバーの名前、IPアドレス、およびポート(たとえば、「Vserver-SSL-1」、「10.102.29.50」、「443」)を入力します。
- [Protocol] ボックスの一覧で、仮想サーバーの種類(たとえば、[SSL])を選択します。
- [Create] をクリックしてから、[Close] をクリックします。
- 作成した仮想サーバーを選択して、ペインの下部にある[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を使用してサービスを仮想サーバーにバインドする
- [Traffic Management]>[SSL Offload]>[Virtual Servers] の順に選択します。
- 詳細ペインで仮想サーバーを選択して、[Open]をクリックします。
- [Services]タブの[Active]列で、選択した仮想サーバーにバインドするサービスの横にあるチェックボックスをオンにします。
- [OK] をクリックします。
- ペインの下部にある[Details]セクションの[Number of Bound Services ]カウンターが、仮想サーバーにバインドしたサービスの数だけ増加することを確認します。
証明書とキーのペアの追加
SSL証明書は、SSLキー交換および暗号化/復号化プロセスに含まれるエレメントです。証明書は、SSLサーバーのアイデンティティを確立するためにSSLハンドシェイク中に使用されます。Citrix ADCアプライアンスに含まれている、有効な既存のSSL証明書を使用するか、独自のSSL証明書を作成できます。アプライアンスは、最大4096ビットのRSA/DSA証明書をサポートします。
注:
信頼される証明機関から発行された有効なSSL証明書を使用することをお勧めします。無効な証明書や自分で作成した証明書は、一部のSSLクライアントと互換性がありません。
SSL処理に使用する前に、証明書を対応するキーとペアにする必要があります。次に、証明書とキーのペアを仮想サーバーにバインドすると、SSL処理に使用できるようになります。
CLIを使用して証明書キーペアを追加します
コマンドプロンプトで次のコマンドを入力し、証明書とキーのペアを作成して構成を確認します。
- 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を使用して証明書キーペアを追加します
次の手順を実行します:
- [Traffic Management ]> [SSL] > [Certificates] に移動します。
- 詳細ペインで、[Add] をクリックします。
- [Install Certificate] ダイアログボックスの[Certificate-Key Pair Name]ボックスに、追加する証明書とキーのペアの名前(たとえば、「Certkey-SSL-1」)を入力します。
-
[Details] の [Certificate File Name] で、[Browse (Appliance)] をクリックして証明書を検索します。証明書とキーはともに、アプライアンスの
/nsconfig/ssl/
ディレクトリに保存されます。ローカルシステムにある証明書を使用するには、[Local] を選択します。 - 使用する証明書を選択して、[Select]をクリックします。
- [Private Key File Name] で、[Browse (Appliance)] をクリックして秘密キーファイルを検索します。ローカルシステムにある秘密キーを使用するには、[Local] を選択します。
- 使用するキーを選択して、[Select] をクリックします。証明書とキーのペアで使用するキーを暗号化するには、暗号化に使用するパスワードを[Password]ボックスに入力します。
- [インストール] をクリックします。
- 証明書キーのペアをダブルクリックし、[証明書の詳細]ウィンドウで、パラメーターが正しく構成されて保存されていることを確認します。
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証明書キーペアを仮想サーバーにバインドします
次の手順を実行します:
- [Traffic Management]>[SSL Offload]>[Virtual Servers] の順に選択します。
- 証明書とキーのペアをバインドする仮想サーバー(たとえば、[Vserver-SSL-1])を選択して、[Open] をクリックします。
- [Configure Virtual Server (SSL Offload)] ダイアログボックスの [SSL Settings] タブにある [Available] で、仮想サーバーにバインドする証明書とキーのペア(たとえば、[Certkey-SSL-1])を選択して、[Add] をクリックします。
- [OK] をクリックします。
- 選択した証明書キーのペアが[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アクションを作成します
次の手順を実行します:
- [Traffic Management]>[SSL]>[Policies] に移動します。
- 詳細ペインで、[Actions] タブ、[Add] をクリックします。
-
[Create SSL Action] ダイアログボックスの [Name] ボックスに、「
Action-SSL-OWA
」と入力します。 - [Outlook Web Access]で、[Enabled] を選択します。
- [Create] をクリックしてから、[Close] をクリックします。
- [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 Policy-SSL-1 -rule ns_true -reqaction Action-SSL-OWA
Done
> show ssl policy 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ポリシーを作成します
次の手順を実行します:
- [Traffic Management]>[SSL]>[Policies] に移動します。
- 詳細ペインで、[Add] をクリックします。
- [Create SSL Policy] ダイアログボックスの [Name] ボックスに、SSLポリシーの名前(たとえば、「Policy-SSL-1」)を入力します。
-
[Request Action] で、このポリシーに関連付ける既存のSSLアクション(たとえば、[Action-SSL-OWA])を選択します。
ns_true
汎用式により、成功したSSLハンドシェイクトラフィックのすべてにこのポリシーが適用されます。特定の応答に対してのみポリシーを適用する必要がある場合は、より高い詳細レベルのポリシーを作成できます。詳細なポリシー式の設定について詳しくは、「SSLアクションとポリシー」を参照してください。 - [Named Expressions] で、組み込みの汎用式ns_trueを選択し、[Add Expression] をクリックします。式ns_trueが[Expression]ボックスに表示されます。
- [Create] をクリックしてから、[Close] をクリックします。
- ポリシーを選択して、ペイン下部にある[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仮想サーバーにバインドします
次の手順を実行します:
- [Traffic Management]>[SSL Offload]>[Virtual Servers] の順に選択します。
- 詳細ペインで仮想サーバー(たとえば、[Vserver-SSL-1])を選択して、[Open] をクリックします。
- [Configure Virtual Server (SSL Offload)]ダイアログボックスで [Insert Policy] をクリックし、SSL仮想サーバーにバインドするポリシーを選択します。必要に応じて、[Priority]ボックスをダブルクリックして、新しい優先度を入力することもできます。
- [OK] をクリックします。