-
-
SSLによる負荷分散トラフィックのセキュリティ保護
-
-
VMware ESX、Linux KVM、およびCitrix HypervisorでNetScaler ADC VPXのパフォーマンスを最適化する
-
-
NetScalerアプライアンスのアップグレードとダウングレード
-
-
-
-
-
-
-
-
-
-
-
-
This content has been machine translated dynamically.
Dieser Inhalt ist eine maschinelle Übersetzung, die dynamisch erstellt wurde. (Haftungsausschluss)
Cet article a été traduit automatiquement de manière dynamique. (Clause de non responsabilité)
Este artículo lo ha traducido una máquina de forma dinámica. (Aviso legal)
此内容已经过机器动态翻译。 放弃
このコンテンツは動的に機械翻訳されています。免責事項
이 콘텐츠는 동적으로 기계 번역되었습니다. 책임 부인
Este texto foi traduzido automaticamente. (Aviso legal)
Questo contenuto è stato tradotto dinamicamente con traduzione automatica.(Esclusione di responsabilità))
This article has been machine translated.
Dieser Artikel wurde maschinell übersetzt. (Haftungsausschluss)
Ce article a été traduit automatiquement. (Clause de non responsabilité)
Este artículo ha sido traducido automáticamente. (Aviso legal)
この記事は機械翻訳されています.免責事項
이 기사는 기계 번역되었습니다.책임 부인
Este artigo foi traduzido automaticamente.(Aviso legal)
这篇文章已经过机器翻译.放弃
Questo articolo è stato tradotto automaticamente.(Esclusione di responsabilità))
Translation failed!
SSLによる負荷分散トラフィックのセキュリティ保護
NetScaler 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を有効にする必要があります。その後、NetScalerアプライアンスでSSL仮想サーバーとHTTPまたはTCPサーバーを作成する必要があります。最後に、有効なSSL証明書と設定済みのサービスを、SSL仮想サーバーにバインドする必要があります。
SSL仮想サーバーは、暗号化された着信トラフィックを傍受して、ネゴシエートしたアルゴリズムを使用してそのトラフィックを解読します。復号化されたデータは、NetScalerアプライアンス上のほかのエンティティに転送され、適切に処理されます。
次のフローチャートには、基本的なSSLオフロードセットアップを設定するタスクの順序が示されています。
図1: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を有効にする
次の手順を実行します:
- ナビゲーションペインで、[ システム]を展開し、[ 設定]をクリックします。
- 詳細ペインの [ モードと機能] で、[ 基本機能の変更] をクリックします。
- 「 SSL オフロード 」チェックボックスを選択し、「 OK」をクリックします。
- 「 機能の有効化/無効化」では? メッセージボックスで、「 はい」をクリックします。
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] の順に選択します。
- 詳細ペインで、[ 追加] をクリックします。
- [Create Service] ダイアログボックスで、サービスの名前、IPアドレス、およびポートを入力します(たとえば、SVC_HTTP1, 10.102.29.18、および80)。
- プロトコルリストで 、サービスのタイプ (HTTP など) を選択します。
- [ 作成] をクリックし、[ 閉じる] をクリックします。構成した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] の順に選択します。
- 詳細ペインで、[ 追加] をクリックします。
- [Create Virtual Server (SSL Offload)] ダイアログボックスで、仮想サーバーの名前、IPアドレス、およびポートを入力します。
- プロトコルリストで 、仮想サーバーのタイプ (SSL など) を選択します。
- [ 作成] をクリックし、[ 閉じる] をクリックします。
- 作成した仮想サーバーを選択して、ペインの下部にある[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]をクリックします。
- [ サービス ] タブの [ アクティブ ] 列で、選択した仮想サーバーにバインドするサービスの横にあるチェックボックスを選択します。
- [OK] をクリックします。
- ペインの下部にある[Details]セクションの[Number of Bound Services ]カウンターが、仮想サーバーにバインドしたサービスの数だけ増加することを確認します。
証明書とキーのペアを追加します
SSL証明書は、SSLキー交換および暗号化/復号化プロセスに含まれるエレメントです。証明書は、SSLサーバーのアイデンティティを確立するためにSSLハンドシェイク中に使用されます。NetScalerアプライアンスに含まれている、有効な既存の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を使用して証明書キーペアを追加します
次の手順を実行します:
- [Traffic Management ]> [SSL] > [Certificates] に移動します。
- 詳細ペインで、[ 追加] をクリックします。
- [ 証明書のインストール] ダイアログボックスの [証明書とキーのペア名 ] テキストボックスに、追加する証明書キーペアの名前 (CertKey-SSL-1 など) を入力します。
- 「 詳細」の「証明書ファイル名」で、「 ブラウズ(アプライアンス) 」をクリックして証明書を探します。証明書とキーはともに、アプライアンスの/nsconfig/ssl/ディレクトリに保存されます。ローカルシステムにある証明書を使用するには、[Local]を選択します。
- 使用する証明書を選択し、[ 選択] をクリックします。
- 「プライベート・キー・ファイル名」で、「 ブラウズ(アプライアンス) 」をクリックしてプライベート・キー・ファイルを探します。ローカルシステムにある秘密キーを使用するには、[Local]を選択します。
- 使用するキーを選択し、[ 選択] をクリックします。証明書とキーのペアで使用するキーを暗号化するには、暗号化に使用するパスワードを[Password]ボックスに入力します。
- [Install] をクリックします。
- 証明書キーのペアをダブルクリックし、[証明書の詳細]ウィンドウで、パラメーターが正しく構成されて保存されていることを確認します。
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] で、仮想サーバーにバインドする証明書とキーのペアを選択します。次に、[追加] をクリックします。
- [OK] をクリックします。
- 選択した証明書キーのペアが[Configured]領域に表示されていることを確認します。
Outlook Web Accessに対するサポートの構成
NetScalerアプライアンスでOutlook Web Access(OWA)サーバーを使用している場合は、OWAサーバー宛のHTTP要求に特別なヘッダーフィールド「FRONT-END-HTTPS: ON」を挿入するようにアプライアンスを構成して、URLリンクが「http://
」ではなく「https://
」として生成されるようにします。
注: OWA サポートは HTTP ベースの 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] に移動します。
- 詳細ペインの[ アクション ]タブで、[ 追加]をクリックします。
- 「 SSL アクションの作成 」ダイアログの「名前」テキストボックスに「action-SSL-OWA」と入力します。
- Outlook Web Access で [ 有効] を選択します。
- [ 作成] をクリックし、[ 閉じる] をクリックします。
- [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ポリシーを作成します
次の手順を実行します:
- [Traffic Management]>[SSL]>[Policies] に移動します。
- 詳細ペインで、[ 追加] をクリックします。
- [ SSL ポリシーの作成 ] ダイアログボックスの [名前] テキストボックスに、SSL ポリシーの名前 (Policy-SSL-1 など) を入力します。
- 「 リクエストアクション 」で、このポリシーに関連付ける設定済みの SSL アクション(Action-SSL-OWA など)を選択します。ns_true汎用式により、成功したSSLハンドシェイクトラフィックのすべてにこのポリシーが適用されます。特定の応答に対してのみポリシーを適用する場合は、より高い詳細レベルのポリシーを作成できます。詳細なポリシー式の構成の詳細については、「 SSL アクションとポリシー」を参照してください。
- [Named Expressions] で、組み込みの汎用式ns_trueを選択し、[Add Expression] をクリックします。式ns_trueが[Expression]ボックスに表示されます。
- [ 作成] をクリックし、[ 閉じる] をクリックします。
- ポリシーを選択して、ペイン下部にある[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) を選択し、「開く」をクリックします。
- [ 仮想サーバーの設定 (SSL オフロード) ] ダイアログボックスで、[ ポリシーの挿入] をクリックし、SSL 仮想サーバーにバインドするポリシーを選択します。必要に応じて、[Priority]ボックスをダブルクリックして、新しい優先度を入力することもできます。
- [OK] をクリックします。
共有
共有
This Preview product documentation is Cloud Software Group Confidential.
You agree to hold this documentation confidential pursuant to the terms of your Cloud Software Group Beta/Tech Preview Agreement.
The development, release and timing of any features or functionality described in the Preview documentation remains at our sole discretion and are subject to change without notice or consultation.
The documentation is for informational purposes only and is not a commitment, promise or legal obligation to deliver any material, code or functionality and should not be relied upon in making Cloud Software Group product purchase decisions.
If you do not agree, select I DO NOT AGREE to exit.