SSLオフロード構成
SSLオフロードを構成するには、NetScaler ADCアプライアンスでSSL処理を有効にし、SSLベースの仮想サーバーを構成する必要があります。仮想サーバは SSL トラフィックをインターセプトし、トラフィックを復号化し、仮想サーバにバインドされたサービスに転送します。メディアストリーミングなどの時間的制約のあるトラフィックを保護するために、DTLS 仮想サーバーを構成できます。SSL オフロードを有効にするには、有効な証明書とキーをインポートし、そのペアを仮想サーバーにバインドする必要があります。
注
リリース 13.1 ビルド 17.x から、TLSv1.2 より前のプロトコルは SSL 内部サービスでは無効になっています。デフォルト (拡張) プロファイルが有効になっている場合、
ns_default_ssl_profile_internal_frontend_service
プロファイルは SSL 内部サービスにバインドされ、SSLv3、TLSv1.0、および TLSv1.1 プロトコルはプロファイルで無効になります。
SSL を有効にする
SSL トラフィックを処理するには、SSL 処理を有効にする必要があります。SSL 処理を有効にしなくても、仮想サーバやサービスなどの SSL ベースのエンティティを設定できます。ただし、SSL 処理が有効になるまでは機能しません。
CLI を使用して SSL 処理を有効にする
コマンドプロンプトで入力します:
enable ns feature ssl
show ns feature
<!--NeedCopy-->
例:
enable ns feature SSL
Done
show ns feature
Feature Acronym Status
------- ------- ------
1) Web Logging WL OFF
2) Surge Protection SP ON
3) Load Balancing LB ON
.
.
.
9) SSL Offloading SSL ON
.
.
.
24) NetScaler Push push OFF
Done
<!--NeedCopy-->
GUI を使用して SSL 処理を有効にする
[ システム] > [設定] に移動し、[ モードと機能 ] グループで [ 基本機能の構成] をクリックし、[ SSL オフロード] をクリックします。
サービスを構成する
NetScaler ADCアプライアンスでは、サービスは物理サーバーまたは物理サーバー上のアプリケーションを表します。設定が完了すると、アプライアンスがネットワーク上の物理サーバに到達してそのステータスを監視できるようになるまで、サービスは無効状態になります。
CLI を使用してサービスを追加する
コマンドプロンプトで次のコマンドを入力してサービスを追加し、構成を確認します。
add service <name> (<IP> | <serverName>) <serviceType> <port>
show service <serviceName>
<!--NeedCopy-->
例:
add service sslsvc 198.51.100.225 SSL 443
Done
sh ssl service sslsvc
Advanced SSL configuration for Back-end SSL Service sslsvc:
DH: DISABLED
DH Private-Key Exponent Size Limit: DISABLED Ephemeral RSA: DISABLED
Session Reuse: ENABLED Timeout: 300 seconds
Cipher Redirect: DISABLED
SSLv2 Redirect: DISABLED
ClearText Port: 0
Server Auth: DISABLED
SSL Redirect: DISABLED
Non FIPS Ciphers: DISABLED
SNI: DISABLED
OCSP Stapling: DISABLED
SSLv2: DISABLED SSLv3: ENABLED TLSv1.0: ENABLED TLSv1.1: ENABLED TLSv1.2: ENABLED TLSv1.3: DISABLED
Send Close-Notify: YES
Strict Sig-Digest Check: DISABLED
Zero RTT Early Data: ???
DHE Key Exchange With PSK: ???
Tickets Per Authentication Context: ???
ECC Curve: P_256, P_384, P_224, P_521
1) Cipher Name: DEFAULT_BACKEND
Description: Default cipher list for Backend SSL session
Done
<!--NeedCopy-->
CLI を使用してサービスを変更または削除する
サービスを変更するには、set service コマンドを使用します。これは add service コマンドと同様ですが、既存のサービスの名前を入力する点が異なります。
サービスを削除するには、rm service コマンドを使用します。このコマンドは<name> 引数のみを受け付けます。
rm service <servicename>
<!--NeedCopy-->
例:
rm service sslsvc
<!--NeedCopy-->
サービスを変更するには、set service コマンドを使用し、任意のパラメータを選択してその設定を変更します。
set service <name> (<IP> | <serverName>) <serviceType> <port>
<!--NeedCopy-->
例:
set service sslsvc 198.51.100.225 SSL 443
<!--NeedCopy-->
GUI を使用してサービスを構成する
[ トラフィック管理] > [負荷分散] > [サービス] に移動し、サービスを作成して、プロトコルを SSL として指定します。
SSL 仮想サーバ構成
セキュアセッションでは、NetScaler ADCアプライアンス上のクライアントとSSLベースの仮想サーバー間の接続を確立する必要があります。SSL 仮想サーバは、SSL トラフィックをインターセプトし、復号化して処理してから、仮想サーバにバインドされたサービスに送信します。
注: 有効な証明書/キーのペアと少なくとも1つのサービスがバインドされるまで、NetScaler ADCアプライアンスではSSL仮想サーバーがダウンしているとマークされます。SSL ベースの仮想サーバーは、プロトコルタイプが SSL または SSL_TCP の負荷分散仮想サーバーです。NetScaler ADCアプライアンスで負荷分散機能を有効にする必要があります。
CLIを使用してSSLベースの仮想サーバーを追加します
コマンドプロンプトで次のコマンドを入力し、SSLベースの仮想サーバーを追加して構成を確認します。
add lb vserver <name> (serviceType) <IPAddress> <port>
show ssl vserver <name>
<!--NeedCopy-->
例:
add lb vserver sslvs SSL 192.0.2.240 443
Done
sh ssl vserver sslvs
Advanced SSL configuration for VServer sslvs:
DH: DISABLED
DH Private-Key Exponent Size Limit: DISABLED Ephemeral RSA: ENABLED Refresh Count: 0
Session Reuse: ENABLED Timeout: 120 seconds
Cipher Redirect: DISABLED
SSLv2 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
SSLv2: 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) Cipher Name: DEFAULT
Description: Default cipher list with encryption strength >= 128bit
Done
<!--NeedCopy-->
CLI を使用して SSL ベースの仮想サーバを変更または削除する
SSL 仮想サーバの負荷分散プロパティを変更するには、set lb vserver
コマンドを使用します。set コマンドはadd lb vserver
コマンドと似ていますが、既存の仮想サーバの名前を入力する点が異なります。 SSL ベースの仮想サーバの SSL プロパティを変更するには、 set ssl vserver
コマンドを使用します。詳細については、このページの「SSL 仮想サーバーパラメーター」を参照してください。
SSL 仮想サーバを削除するには、<name>
引数のみを受け入れるrm lb vserver
コマンドを使用します。
GUI を使用して SSL ベースの仮想サーバを構成する
[ トラフィック管理] > [負荷分散] > [仮想サーバー] に移動し、仮想サーバーを作成し、プロトコルを SSL として指定します。
サービスのSSL仮想サーバーへのバインド
ADC アプライアンスは、復号化された SSL データをネットワーク内のサーバに転送します。データを転送するには、これらの物理サーバを表すサービスを、SSL データを受信する仮想サーバにバインドする必要があります。
通常、ADC アプライアンスと物理サーバ間のリンクはセキュアです。したがって、アプライアンスと物理サーバ間のデータ転送を暗号化する必要はありません。ただし、アプライアンスとサーバー間のデータ転送を暗号化することで、エンドツーエンド暗号化を提供できます。詳細については、 エンドツーエンド暗号化による SSL オフロードの設定を参照してください。
注: SSLベースの仮想サーバーにサービスをバインドする前に、ADCアプライアンスで負荷分散機能を有効にしてください。
CLIを使用してサービスを仮想サーバーにバインドします
コマンドプロンプトで次のコマンドを入力して、サービスを仮想サーバーにバインドし、構成を確認します。
bind lb vserver <name> <serviceName>
show lb vserver <name>
<!--NeedCopy-->
例:
bind lb vserver sslvs sslsvc
Done
sh lb vserver sslvs
sslvs (192.0.2.240:443) - SSL Type: ADDRESS
State: DOWN[Certkey not bound]
Last state change was at Wed May 2 11:43:04 2018
Time since last state change: 0 days, 00:13:21.150
Effective State: DOWN
Client Idle Timeout: 180 sec
Down state flush: ENABLED
Disable Primary Vserver On Down : DISABLED
Appflow logging: ENABLED
No. of Bound Services : 1 (Total) 0 (Active)
Configured Method: LEASTCONNECTION BackupMethod: ROUNDROBIN
Mode: IP
Persistence: NONE
Vserver IP and Port insertion: OFF
Push: DISABLED Push VServer:
Push Multi Clients: NO
Push Label Rule: none
L2Conn: OFF
Skip Persistency: None
Listen Policy: NONE
IcmpResponse: PASSIVE
RHIstate: PASSIVE
New Service Startup Request Rate: 0 PER_SECOND, Increment Interval: 0
Mac mode Retain Vlan: DISABLED
DBS_LB: DISABLED
Process Local: DISABLE
Traffic Domain: 0
TROFS Persistence honored: ENABLED
Retain Connections on Cluster: NO
1) sslsvc (198.51.100.225: 443) - SSL State: DOWN Weight: 1
Done
<!--NeedCopy-->
CLI を使用して仮想サーバからサービスをバインド解除する
コマンドプロンプトで、次のコマンドを入力します:
unbind lb vserver <name> <serviceName>
<!--NeedCopy-->
例:
unbind lb vserver sslvs sslsvc
Done
<!--NeedCopy-->
GUIを使用してサービスを仮想サーバーにバインドする
- Traffic Management > Load Balancing > Virtual Serversに移動します。
- 仮想サーバーを開き、[ サービスとサービスグループ] セクションの [ **負荷分散仮想サーバーサービスバインディング** ] タイルをクリックします。
- 負荷分散仮想サーバーサービスバインディングページで、「バインディングの追加** 」 **タブをクリックし、「 **サービスの選択」の下の「 クリックして選択**」をクリックして、バインドするサービスの横にあるチェックボックスを選択します。
- [ 選択] をクリックして [ バインド] をクリックします
複数のサイトを安全にホストするためのサーバー名表示 (SNI) 仮想サーバーを構成する
仮想ホスティングは、同じ IP アドレスを持つ複数のドメイン名をホストするために Web サーバーによって使用されます。アプライアンスは、透過的な SSL サービスまたは仮想サーバベースの SSL オフロードを使用して Web サーバから SSL 処理をオフロードすることにより、複数のセキュアドメインのホスティングをサポートします。ただし、複数の Web サイトが同じ仮想サーバーでホストされている場合は、想定されるホスト名が仮想サーバーに送信される前に SSL ハンドシェイクが完了します。その結果、アプライアンスは、接続の確立後にクライアントに提示する証明書を判断できません。この問題は、仮想サーバで SNI を有効にすることで解決します。SNI は、クライアントがハンドシェイクの開始時にホスト名を提供するために使用するトランスポート層セキュリティ (TLS) 拡張です。ADC アプライアンスはこのホスト名を共通名と比較し、一致しない場合はサブジェクト代替名 (SAN) と比較します。名前が一致すると、アプライアンスは対応する証明書をクライアントに提示します。
ワイルドカード SSL 証明書は、同じ組織がこれらのドメインを管理していて、第 2 レベルのドメイン名が同じ場合に、複数のサブドメインで SSL 暗号化を有効にするのに役立ちます。たとえば、一般名「*.sports.net」を使用してスポーツネットワークに発行されたワイルドカード証明書は、「login.sports.net」や「help.sports.net」などのドメインを保護するために使用できます。「login.ftp.sports.net」ドメインをセキュリティで保護することはできません。
注: ADC アプライアンスでは、 SAN フィールドのドメイン名、URL、電子メール ID DNS エントリのみが比較されます。
-snicert オプションを使用すると、複数のサーバー証明書を 1 つの SSL 仮想サーバーまたはトランスペアレントサービスにバインドできます。仮想サーバーまたはサービスで SNI が有効になっている場合、仮想サーバーまたはサービスはこれらの証明書を発行します。SNI はいつでも有効にできます。
CLI を使用して複数のサーバ証明書を 1 つの SSL 仮想サーバにバインドする
コマンドプロンプトで次のコマンドを入力して SNI を構成し、構成を確認します。
set ssl vserver <vServerName>@ [-SNIEnable ( ENABLED | DISABLED )]
bind ssl vserver <vServerName>@ -certkeyName <string> -SNICert
show ssl vserver <vServerName>
<!--NeedCopy-->
CLI を使用して複数のサーバ証明書を 1 つのトランスペアレントサービスにバインドするには、前述のコマンドで service をvserver
に、service nameをvservername
に置き換えます。
注:-clearTextPort 80
オプションを使用して SSL サービスを作成します。
GUI を使用して複数のサーバ証明書を 1 つの SSL 仮想サーバにバインドする
- Traffic Management > Load Balancing > Virtual Serversに移動します。
- SSL 仮想サーバーを開き、[ 証明書] で [ サーバー証明書] を選択します。
- 証明書を追加するか、一覧から証明書を選択して、[ SNI のサーバー証明書] をクリックします。
- [詳細設定]で [ SSL パラメータ] を選択します。
- [ SNI 有効化] をクリックします。
バックエンドサービスでの SNI のサポート
注:SNI は DTLS バックエンドサービスではサポートされていません。
NetScalerアプライアンスは、バックエンドでサーバー名表示(SNI)をサポートしています。つまり、ハンドシェイクが正常に完了するために、共通名がクライアント hello のサーバ名としてバックエンドサーバに送信されます。このサポートは、連邦政府システムインテグレータのお客様のセキュリティ要件を満たすのに役立ちます。また、SNI には、ファイアウォールで数百もの異なる IP アドレスやポートを開くのではなく、1 つのポートしか使用できないという利点があります。
連邦システムインテグレーターのお客様のセキュリティ要件には、2012R2 および WAP サーバーにおける Active Directory フェデレーションサービス (ADFS) 3.0 のサポートが含まれます。この要件を満たすには、NetScaler ADCアプライアンスのバックエンドでSNIをサポートする必要があります。
注:
SNI を機能させるには、クライアント hello のサーバ名が、SSL 仮想サーバにバインドされたバックエンドサービスに設定されたホスト名と一致する必要があります。たとえば、バックエンドサーバーのホスト名が www.mail.example.com の場合、SNI 対応バックエンドサービスはサーバー名をhttps://www.mail.example.comとして構成する必要があります。このホスト名は、クライアント hello のサーバ名と一致する必要があります。
バックエンドサービスでの動的 SNI のサポート
NetScalerアプライアンスは、バックエンドTLS接続で動的SNIをサポートします。つまり、アプライアンスはクライアント接続で SNI を学習し、サーバー側接続で SNI を使用します。SSL サービス、サービスグループ、またはプロファイルに共通名を指定する必要がなくなりました。Client Hello メッセージの SNI 拡張で受信した共通名は、バックエンド SSL 接続に転送されます。
以前は、SSL サービス、サービスグループ、および SSL プロファイルに静的 SNI を設定する必要がありました。その結果、設定された静的 SNI 拡張だけがサーバに送信されました。クライアントが同時に複数のドメインにアクセスする必要がある場合、ADC アプライアンスはクライアントから受け取った SNI をバックエンドサービスに送信できませんでした。代わりに、設定された静的な共通名が送信されました。バックエンドサーバが複数のドメインに対して設定されている場合、サーバは、アプライアンスからの Client Hello メッセージで受信した SNI に基づいて、正しい証明書で応答できます。
注意点:
-
フロントエンドで SNI を有効にし、正しい SNI 証明書を SSL 仮想サーバーにバインドする必要があります。フロントエンドで SNI を有効にしないと、SNI 情報はバックエンドに渡されません。
-
サーバ認証を有効にすると、サーバ証明書が CA 証明書によって検証され、サーバ証明書のコモンネーム/SAN エントリが SNI と照合されます。そのため、CA 証明書をサービスにバインドする必要があります。
-
ダイナミック SNI が有効な場合、バックエンド接続と SSL セッションの再利用は SNI に基づきます。
動的 SNI が有効な場合、SSL モニターは SNI を送信しません。SNI ベースのプロービングでは、静的 SNI が設定されているバックエンドプロファイルを SSL モニターに添付します。モニターは SNI と同じカスタムヘッダーで構成する必要があります。
CLI を使用してバックエンドサービスで SNI を設定する
コマンドプロンプトで入力します:
add service <name> <IP> <serviceType> <port>
add lb vserver <name> <IPAddress> <serviceType> <port>
bind lb vserver <name> <serviceName>
set ssl service <serviceName> -SNIEnable ENABLED -commonName <string>
set ssl profile <name> -SNIEnable ENABLED
<!--NeedCopy-->
例:
add service service_ssl 198.51.100.100 SSL 443
add lb vserver ssl-vs 203.0.113.200 SSL 443
bind lb vserver ssl-vs service_ssl
set ssl service service_ssl -SNIEnable ENABLED –commonName www.example.com
set ssl profile sslprof -SNIEnable ENABLED
<!--NeedCopy-->
GUI を使用してバックエンドサービスで SNI を設定する
- [Traffic Management]>[Load Balancing]>[Services] の順に移動します。
- SSL サービスを選択し、[ 詳細設定] で [ SSL パラメータ] をクリックします。
-
[ SNI 有効化] をクリックします。
GUI を使用して SSL プロファイルで SNI を設定する
- [ システム] > [プロファイル] > [SSL プロファイル] に移動します。
- [追加] をクリックします。
-
[基本設定]で [ SNI 有効] を選択します。
- [OK] をクリックします。
セキュアモニタを SNI 対応バックエンドサービスにバインドする
HTTP、HTTP-ECV、TCP、または TCP-ECV タイプのセキュアモニタを、SNI をサポートするバックエンドサービスおよびサービスグループにバインドできます。ただし、動的 SNI が有効な場合、モニタプローブは SNI 拡張を送信しません。SNI プローブを送信するには、バックエンド SSL プロファイルで静的 SNI を有効にし、プロファイルをモニタにバインドします。モニタのカスタムヘッダーを、モニタプローブの client hello で SNI 拡張として送信されるサーバ名に設定します。
CLI を使用して、セキュアモニタを設定して SNI 対応バックエンドサービスにバインドする
コマンドプロンプトで入力します:
add lb monitor <monitorName> <type> -secure YES
add ssl profile <name> -sslProfileType BackEnd
set lb monitor <monitorName> <type> -customHeaders <string> -sslprofile <backend ssl profile>
set ssl profile <name> -sniEnable ENABLED -commonName <string>
bind service <name> -monitorName <string>
<!--NeedCopy-->
例:
add ssl profile sni_backend_profile -sslProfileType BackEnd
set ssl profile sni_backend_profile -sniEnable ENABLED -commonName example.com
add lb monitor http-ecv-mon HTTP-ECV -secure YES
set monitor http-ecv-mon HTTP-ECV -customHeaders "Host: example.com\r\n" -sslprofile sni_backend_profile
bind service ssl_service –monitorName http-ecv-mon
<!--NeedCopy-->
GUI を使用して、セキュアモニタを構成し、SNI 対応バックエンドサービスにバインドする
- [ システム] > [プロファイル] > [SSL プロファイル] に移動します。
- [追加] をクリックします。
-
プロファイルの名前を指定し、[ SSL プロファイルタイプ] で [ バックエンド] を選択します。
-
コモンネーム (ホストヘッダーと同じ) を指定し、[ SNI Enable] を選択します。
- [OK] をクリックします。
- [ トラフィック管理] > [負荷分散] > [監視] に移動します。
- [追加] をクリックします。
- モニターの名前を指定します。[ タイプ] で、[HTTP]、[HTTP-ECV]、[TCP]、または [TCP-ECV]を選択します。
-
カスタムヘッダーを指定します。
- [ 安全] を選択します。
- [ SSL プロファイル] で、前の手順で作成したバックエンド SSL プロファイルを選択します。
-
[作成] をクリックします。
- [Traffic Management]>[Load Balancing]>[Services] の順に移動します。
- SSL サービスを選択し、[ 編集] をクリックします。
- [ モニター] で、[ バインドの追加] をクリックし、前の手順で作成したモニターを選択して [ バインド] をクリックします。
GUI を使用してセキュアモニタを構成し、SNI 対応バックエンドサービスにバインドする
- [ トラフィック管理 ] > [ 負荷分散 ] > [ 監視] に移動します。
- HTTP-ECV またはTCP-ECV**タイプのモニターを追加し、[ **カスタムヘッダー] を指定します。
- [作成] を選択します。
- [ トラフィック管理 ] > [ 負荷分散 ] > [ サービス] に移動します。
- SSL サービスを選択し、[ 編集] をクリックします。
- [ モニター] で [ バインドの追加] をクリックし、手順 3 で作成したモニターを選択して [ バインド] をクリックします。
不明なサーバー名でもハンドシェイクを継続できるようにする
注:
この機能はリリース 13.1 ビルド 45.x 以降で使用できます。
SNIが有効になっていて、NetScalerアプライアンスが不明なサーバー名のクライアントHelloを受信すると、SSLハンドシェイクは終了します。リリース13.1ビルド45.x以降、アプライアンスは不明なサーバー名でもSSLハンドシェイクを継続できるようにし、ハンドシェイクのドロップまたは完了の決定はクライアントに任せます。SNI がパラメーターを使用して ENABLED に設定されている場合、フロントエンド SSL プロファイルでこの設定を構成できます。 allowUnknownSNI
SNI ベースのルールで転送アクションを使用する必要がある場合は、このパラメータを無効のままにしてください。たとえば、仮想サーバーv1でSNIを有効にし、特定のドメイン(www.example.com)のすべての要求を仮想サーバーv2に転送するポリシーを設定したとします。以前は、このドメインの v1 で受信したリクエストは自動的に v2 に転送されていました。ただし、 allowunknownSNI
パラメータが有効な場合、リクエストは v1 で処理されます。アプライアンスが v1 でリクエストを処理するには、パラメータを無効にする必要があります。
CLI を使用して未知の SNI を許可するように設定
コマンドプロンプトで入力します:
set ssl profile default_profile -SNIEnable Enabled -allowUnknownSNI <DISABLED/ENABLED>
`AllowUnknownSNI パラメータはデフォルトでは無効になっています。その結果、アプライアンスは不明なサーバー名のハンドシェイクを中止します。この設定を有効にするには、次のように入力します。
set ssl profile default_profile -SNIEnable Enabled -allowUnknownSNI ENABLED
GUI を使用して未知の SNI を許可するように設定
- [ システム ] > [ プロファイル ] > [ SSL プロファイル] に移動します。
- プロファイルを追加する場合は、 SSL プロファイルタイプリストでFrontEnd を選択します。それ以外の場合は、既存のフロントエンドプロファイルを編集できます。
-
「 未知の SNI を許可」を選択します。
- 「 OK」 をクリックし、「 完了」をクリックします。
証明書とキーのペアを追加または更新する
注:
既存の証明書とキーがない場合は、「 証明書の作成」を参照してください。
ECDSA [証明書とキーのペアを作成するには、ECDSA 証明書とキーのペアの作成] をクリックします。
パスワードで保護された証明書とキーのペアは常に正常に追加されます。13.0ビルド79.xより前のビルドでは、NetScalerアプライアンスで強力なパスワードオプションが有効になっていると、パスワードで保護された証明書とキーのペアが追加されないことがありました。ただし、以前のビルドにダウングレードすると、証明書キーの設定は失われます。また、証明書とキーのペアの NITRO API レスポンスでは、
passplain
変数ではなくpasscrypt
変数が送信されます。
SSL トランザクションの場合、サーバーには有効な証明書と、対応する秘密鍵と公開鍵のペアが必要です。SSL データはサーバーの公開鍵で暗号化されます。公開鍵はサーバーの証明書から入手できます。復号化には、対応する秘密鍵が必要です。SSL証明書とキーのペアを追加する際に使用される秘密鍵のパスワードは、NetScalerアプライアンスごとに固有の暗号化キーを使用して保存されます。
ADC アプライアンスは、SSL トランザクションをサーバからオフロードします。したがって、サーバの証明書と秘密キーがアプライアンスに存在し、証明書が対応する秘密キーとペアになっている必要があります。この証明書とキーのペアは、SSL トランザクションを処理する仮想サーバーにバインドする必要があります。
注: NetScalerアプライアンスのデフォルト証明書は2048ビットです。以前のビルドでは、デフォルトの証明書は 512 ビットまたは 1024 ビットでした。リリース 11.0 にアップグレードした後、"ns-"
で始まる古い証明書とキーのペアをすべて削除し、アプライアンスを再起動して 2048 ビットのデフォルト証明書を自動的に生成する必要があります。
証明書とキーの両方をアプライアンスに追加するには、NetScaler ADCアプライアンスのローカルストレージに存在する必要があります。証明書またはキーファイルがアプライアンス上にない場合は、ペアを作成する前に証明書またはキーファイルをアプライアンスにアップロードします。
重要: 証明書とキーは、デフォルトで /nsconfig/ssl ディレクトリに保存されます。証明書またはキーが他の場所に保存されている場合は、NetScalerアプライアンス上のファイルへの絶対パスを指定する必要があります。NetScaler FIPSアプライアンスは外部キー(非FIPSキー)をサポートしていません。FIPS アプライアンスでは、ハードディスクやフラッシュメモリなどのローカルストレージデバイスからキーをロードすることはできません。FIPS キーは、アプライアンスのハードウェアセキュリティモジュール (HSM) に存在する必要があります。
NetScalerアプライアンスではRSAキーのみがサポートされています。
通知期間を設定し、有効期限モニターが証明書が期限切れになる前にプロンプトを発行できるようにします。
NetScalerアプライアンスは、証明書と秘密鍵ファイルの次の入力形式をサポートしています。
- PEM-プライバシー強化メール
- DER-識別符号化規則
- PFX-個人情報交換
ソフトウェアはフォーマットを自動的に検出します。そのため、informパラメーターで形式を指定する必要はなくなりました。フォーマット (正しいか正しくない) を指定した場合、ソフトウェアはそのフォーマットを無視します。証明書と鍵ファイルの形式は同じである必要があります。
注: 証明書は、次のいずれかのハッシュアルゴリズムを使用して署名する必要があります。
- MD5
- SHA-1
- SHA-224
- SHA-256
- SHA-384
- SHA-512
MPX アプライアンスは、次のサイズまで、512 ビット以上の証明書をサポートします。
- 仮想サーバー上の 4096 ビットサーバー証明書
- サービス上の 4096 ビットのクライアント証明書
- 4096 ビット CA 証明書(中間証明書とルート証明書を含む)
- バックエンドサーバー上の 4096 ビット証明書
- 4096 ビットのクライアント証明書 (仮想サーバーでクライアント認証が有効になっている場合)
VPX仮想アプライアンスは、次のサイズまで、512ビット以上の証明書をサポートします。
- 仮想サーバー上の 4096 ビットサーバー証明書
- サービス上の 4096 ビットのクライアント証明書
- 4096 ビット CA 証明書(中間証明書とルート証明書を含む)
- バックエンドサーバー上の 4096 ビット証明書
- 4096 ビットのクライアント証明書 (仮想サーバーでクライアント認証が有効になっている場合)
次の表は、NetScalerアプライアンスでサポートされているRSASSA-PSSパラメーターセットを示しています。RSASSA-PSS アルゴリズムは X.509 証明書パス検証でサポートされています。
パブリックキー OID | マスク生成関数 (MGF) | MGFダイジェスト機能 | シグネチャダイジェスト関数 | 塩の長さ |
---|---|---|---|---|
RSAEncryption | MGF1 | SHA-256 | SHA-256 | 32 バイト |
RSAEncryption | MGF1 | SHA-384 | SHA-384 | 48 バイト |
RSAEncryption | MGF1 | SHA-512 | SHA-512 | 64 バイト |
注
NetScaler SDXアプライアンスは、512ビット以上の証明書をサポートします。アプライアンスでホストされている各NetScaler ADC VPXインスタンスは、VPX仮想アプライアンスの前述の証明書サイズをサポートします。ただし、SSL チップがインスタンスに割り当てられている場合、そのインスタンスは MPX アプライアンスでサポートされる証明書サイズをサポートします。
CLI を使用した証明書とキーのペアの追加
コマンドプロンプトで次のコマンドを入力して、証明書とキーのペアを追加し、構成を確認します。
add ssl certKey <certkeyName> -cert <string>[(-key <string> [-password]) | -fipsKey <string>] [-inform ( DER | PEM )] [<passplain>] [-expiryMonitor ( ENABLED | DISABLED ) [-notificationPeriod <positive_integer>]]
show ssl certKey [<certkeyName>]
<!--NeedCopy-->
例:
add ssl certKey sslckey -cert server_cert.pem -key server_key.pem -password ssl -expiryMonitor ENABLED -notificationPeriod 30
Done
Note: For FIPS appliances, replace -key with -fipskey
show ssl certKey sslckey
Name: sslckey Status: Valid, Days to expiration:8418
Version: 3
Serial Number: 01
Signature Algorithm: md5WithRSAEncryption
Issuer: C=US,ST=SJ,L=SJ,O=NS,OU=NSSSL,CN=www.root.com
Validity
Not Before: Jul 15 02:25:01 2005 GMT
Not After : Nov 30 02:25:01 2032 GMT
Subject: C=US,ST=SJ,L=SJ,O=NS,OU=NSSSL,CN=www.server.com
Public Key Algorithm: rsaEncryption
Public Key size: 2048
Done
<!--NeedCopy-->
CLI を使用して証明書とキーのペアを更新または削除する
証明書とキーのペアの有効期限モニタまたは通知期間を変更するには、 set ssl certkey
コマンドを使用します。証明書とキーのペアの証明書またはキーを置き換えるには、 update ssl certkey
コマンドを使用します。update ssl certkey
コマンドには、ドメインチェックをオーバーライドするための追加パラメータがあります。どちらのコマンドでも、既存の証明書とキーのペアの名前を入力します。SSL 証明書とキーのペアを削除するには、rm ssl certkey
コマンドを使用します。このコマンドでは<certkeyName>
引数のみを受け付けます。
例:
set ssl certKey <certkeyName> [-expiryMonitor ( ENABLED | DISABLED )
[-notificationPeriod <positive_integer>]]
update ssl certKey <certkeyName> [-cert <string> [-password]] [-key
<string> | -fipsKey <string>] [-inform <inform>] [-noDomainCheck]
<!--NeedCopy-->
GUI を使用して証明書とキーのペアを追加または更新する
-
トラフィック管理 > SSL > 証明書 > サーバに移動します。
-
次のパラメータの値を入力し、[ Install] をクリックします。
-
証明書とキーのペア名-証明書と秘密キーのペアの名前。
-
証明書ファイル名-認証局から受け取った署名付き証明書。
-
キーファイル名-証明書とキーのペアを形成するために使用される秘密キーファイルの名前と、オプションでそのファイルへのパス。
-
再起動中のログ証明書とキーのペアの読み込み失敗
証明書ファイルまたは秘密鍵ファイルがNetScalerメモリにアップロードされた後は、アプライアンスを再起動しない限り、ソースファイルへの変更は反映されません。再起動は、次のような理由で失敗することがあります。
- 証明書ファイルは更新されますが、キーファイルは更新されません。
- 更新されたファイルは壊れています。
- 新しいキーファイルはパスワードで保護されています。
- パスワードが変更されました。
これらの障害は/var/log/ns.log
に記録されます。 tail -f /var/log/ns.log
コマンドを使用してファイルを表示できます。
この障害を記録するために、以下の変更が導入されました。
-
証明書ファイルとキーファイルをアプライアンスに追加または更新すると、証明書とキーのペアのダイジェスト属性が作成されます。キーファイルがない場合 (FIPS や HSM 設定など)、証明書ファイル専用のダイジェストが作成されます。
注:
証明書ファイル名と秘密鍵ファイル名には、次の文字のみを含める必要があります。
- a to z (lower case) - A to Z (upper case) - 0 to 9 (numbers) - / (forward slash) - . (period) - _ (underscore) - : (colon) - - (hyphen) <!--NeedCopy-->
-
アプライアンスが再起動すると、構成ファイル内のダイジェストが、アプライアンス上の証明書とキーファイル(オプション)に対して計算されたダイジェストと比較されます。不一致がある場合は、エラーメッセージが記録されます。
証明書とキーのペアを SSL 仮想サーバーにバインドする
重要:証明書を SSL 仮想サーバーにバインドする前に、中間証明書をこの証明書にリンクします。証明書のリンクの詳細については、「 証明書のチェーンを作成する」を参照してください。
SSL トランザクションの処理に使用される証明書は、SSL データを受信する仮想サーバーにバインドする必要があります。SSL データを受信する仮想サーバが複数ある場合は、有効な証明書とキーのペアをそれぞれにバインドする必要があります。
NetScalerアプライアンスにアップロードした有効な既存のSSL証明書を使用してください。テスト目的の代わりに、アプライアンスに独自の SSL 証明書を作成します。アプライアンスで FIPS キーを使用して作成された中間証明書は、SSL 仮想サーバーにバインドできません。
SSL ハンドシェイク中、クライアント認証中の証明書要求メッセージに、サーバはサーバにバインドされているすべての認証局(CA)の識別名(DN)を一覧表示します。サーバーは、このリストからのみクライアント証明書を受け入れます。特定の CA 証明書の DN 名を SSL クライアントに送信したくない場合は、 skipCA
フラグを設定します。この設定は、特定の CA 証明書の識別名を SSL クライアントに送信してはならないことを示します。
独自の証明書を作成する方法の詳細については、「 証明書の管理」を参照してください。
注:信頼できる認証局が発行する有効なSSL証明書のみを使用することをお勧めします。
CLI を使用して SSL 証明書とキーのペアを仮想サーバにバインドする
コマンドプロンプトで次のコマンドを入力して、SSL 証明書とキーのペアを仮想サーバーにバインドし、構成を確認します。
- bind ssl vserver <vServerName> -certkeyName <certificate-KeyPairName> -CA -skipCAName
- show ssl vserver <vServerName>
<!--NeedCopy-->
例:
bind ssl vs vs1 -certkeyName cert2 -CA -skipCAName
Done
sh ssl vs vs1
Advanced SSL configuration for VServer vs1:
DH: DISABLED
Ephemeral RSA: ENABLED Refresh Count: 0
Session Reuse: ENABLED Timeout: 120 seconds
Cipher Redirect: DISABLED
SSLv2 Redirect: DISABLED
ClearText Port: 0
Client Auth: DISABLED
SSL Redirect: DISABLED
Non FIPS Ciphers: DISABLED
SNI: DISABLED
OCSP Stapling: DISABLED
HSTS: DISABLED
IncludeSubDomains: NO
HSTS Max-Age: 0
SSLv2: DISABLED SSLv3: ENABLED TLSv1.0: ENABLED TLSv1.1: DISABLED TLSv1.2: DISABLED
Push Encryption Trigger: Always
Send Close-Notify: YES
Strict Sig-Digest Check: DISABLED
ECC Curve: P_256, P_384, P_224, P_521
1) CertKey Name: cert1 CA Certificate OCSPCheck: Optional CA_Name Sent
2) CertKey Name: cert2 CA Certificate OCSPCheck: Optional CA_Name Skipped
1) Cipher Name: DEFAULT
Description: Default cipher list with encryption strength >= 128bit
Done
<!--NeedCopy-->
CLI を使用して SSL 証明書とキーのペアを仮想サーバからバインド解除する
unbind ssl certKey <certkeyName>
コマンドを使用して証明書とキーのペアを仮想サーバからバインド解除しようとすると、エラーメッセージが表示されます。このエラーは、コマンドの構文が変更されたために表示されます。コマンドプロンプトで、次のコマンドを入力します:
unbind ssl vserver <vServerName> -certkeyName <string>
<!--NeedCopy-->
例:
unbind ssl vserver vssl -certkeyName sslckey
<!--NeedCopy-->
GUI を使用して SSL 証明書とキーのペアを仮想サーバにバインドする
-
[ トラフィック管理] > [負荷分散] > [仮想サーバー ] に移動し、SSL 仮想サーバーを開きます。[ 証明書 ] セクション内をクリックします。
-
矢印をクリックして、証明書とキーのペアを選択します。
-
リストから証明書とキーのペアを選択します。
-
証明書とキーのペアを仮想サーバーにバインドします。サーバー証明書を SNI 証明書として追加するには、SNI の [サーバー証明書] を選択します。
SSL 仮想サーバパラメータ
SSL 仮想サーバの高度な SSL 構成を設定します。SSL プロファイルでは、これらのパラメータの多くを設定することもできます。SSL プロファイルで設定できるパラメータの詳細については、 SSL プロファイルパラメータを参照してください。
CLI を使用した SSL 仮想サーバーのパラメータの設定
コマンドプロンプトで入力します:
set ssl vserver <vServerName>@ [-clearTextPort <port>] [-dh ( ENABLED |DISABLED ) -dhFile <string>] [-dhCount <positive_integer>][-dhKeyExpSizeLimit ( ENABLED | DISABLED )] [-eRSA ( ENABLED | DISABLED) [-eRSACount <positive_integer>]] [-sessReuse ( ENABLED | DISABLED )[-sessTimeout <positive_integer>]] [-cipherRedirect ( ENABLED | DISABLED ) [-cipherURL <URL>]] [-sslv2Redirect ( ENABLED | DISABLED )[-sslv2URL <URL>]] [-clientAuth ( ENABLED | DISABLED ) [-clientCert ( Mandatory | Optional )]] [-sslRedirect ( ENABLED | DISABLED )][-redirectPortRewrite ( ENABLED | DISABLED )] [-ssl2 ( ENABLED | DISABLED )] [-ssl3 ( ENABLED | DISABLED )] [-tls1 ( ENABLED | DISABLED )] [-tls11 ( ENABLED | DISABLED )] [-tls12 ( ENABLED | DISABLED )][-tls13 ( ENABLED | DISABLED )] [-SNIEnable ( ENABLED | DISABLED )][-ocspStapling ( ENABLED | DISABLED )] [-pushEncTrigger <pushEncTrigger>] [-sendCloseNotify ( YES | NO )] [-dtlsProfileName <string>] [-sslProfile <string>] [-HSTS ( ENABLED | DISABLED )][-maxage <positive_integer>] [-IncludeSubdomains ( YES | NO )][-strictSigDigestCheck ( ENABLED | DISABLED )] [-zeroRttEarlyData (ENABLED | DISABLED )] [-tls13SessionTicketsPerAuthContext <positive_integer>] [-dheKeyExchangeWithPsk ( YES | NO )]
<!--NeedCopy-->
Diffie-Hellman (DH) パラメーター
SSL トランザクションを設定するために DH キー交換を必要とする暗号をアプライアンスで使用するには、アプライアンスで DH キーエクスチェンジを有効にします。ネットワークに基づいて他の設定を構成します。
CLI を使用して DH パラメータを設定する必要がある暗号の一覧を表示するには、sh cipher DH と入力します。
設定ユーティリティを使用して DH パラメータを設定する必要がある暗号を一覧表示するには、[トラフィック管理] > [SSL] > [暗号グループ]に移動し、[DH] をダブルクリックします。
DH キー交換を有効にする方法の詳細については、 Diffie-Hellman (DH) キーの生成を参照してください。
CLI を使用した DH パラメータの設定
コマンドプロンプトで次のコマンドを入力して DH パラメータを構成し、構成を確認します。
- `set ssl vserver <vserverName> -dh <Option> -dhCount <RefreshCountValue> -filepath <string>
- show ssl vserver <vServerName>`
<!--NeedCopy-->
例:
set ssl vserver vs-server -dh ENABLED -dhFile /nsconfig/ssl/ns-server.cert -dhCount 1000
Done
show ssl vserver vs-server
Advanced SSL configuration for VServer vs-server:
DH: ENABLED
Ephemeral RSA: ENABLED Refresh Count: 1000
Session Reuse: ENABLED Timeout: 120 seconds
Cipher Redirect: DISABLED
SSLv2 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
SSLv2: DISABLED SSLv3: ENABLED TLSv1.0: ENABLED TLSv1.2: ENABLED TLSv1.2: ENABLED
1) Cipher Name: DEFAULT
Description: Predefined Cipher Alias
Done
<!--NeedCopy-->
GUI を使用して DH パラメータを設定する
- Traffic Management > Load Balancing > Virtual Serversに移動して仮想サーバーを開きます。
- [ SSL パラメータ ] セクションで、[ DH Param を有効にする] を選択し、更新回数とファイルパスを指定します。
エフェメラル RSA
Ephemeral RSA を使用すると、サーバー証明書がエクスポートクライアント (1024 ビット証明書) をサポートしていない場合でも、エクスポートクライアントはセキュアサーバーと通信できます。エクスポートクライアントがセキュア Web オブジェクトまたはリソースにアクセスできないようにするには、エフェメラル RSA キー交換を無効にする必要があります。
デフォルトでは、この機能はNetScaler ADCアプライアンスで有効になっており、更新カウントはゼロ(無限使用)に設定されています。
注:
エクスポート暗号を SSL または TCP ベースの SSL 仮想サーバーまたはサービスにバインドすると、エフェメラル RSA キーが自動的に生成されます。エクスポート暗号を削除しても、ErSA キーは削除されません。後で別のエクスポート暗号が SSL または TCP ベースの SSL 仮想サーバーまたはサービスにバインドされるときに再利用されます。ErSA キーは、システムの再起動時に削除されます。
CLI を使用してエフェメラル RSA を構成する
コマンドプロンプトで次のコマンドを入力して、エフェメラル RSA を構成し、構成を確認します。
set ssl vserver <vServerName> -eRSA (enabled | disabled) -eRSACount <positive_integer>
show ssl vserver <vServerName>
<!--NeedCopy-->
例:
set ssl vserver vs-server -eRSA ENABLED -eRSACount 1000
Done
show ssl vserver vs-server
Advanced SSL configuration for VServer vs-server:
DH: DISABLED
Ephemeral RSA: ENABLED Refresh Count: 1000
Session Reuse: ENABLED Timeout: 120 seconds
Cipher Redirect: DISABLED
SSLv2 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
SSLv2: DISABLED SSLv3: ENABLED TLSv1.0: ENABLED TLSv1.2: ENABLED TLSv1.2: ENABLED
1) Cipher Name: DEFAULT
Description: Predefined Cipher Alias
Done
<!--NeedCopy-->
GUI を使用してエフェメラル RSA を構成する
- Traffic Management > Load Balancing > Virtual Serversに移動して仮想サーバーを開きます。
- [ SSL パラメータ ] セクションで、[ エフェメラル RSA を有効にする] を選択し、更新回数を指定します。
セッション再利用
SSL トランザクションの場合、初期 SSL ハンドシェイクを確立するには、CPU を集中的に使用する公開キー暗号化操作が必要です。ほとんどのハンドシェイク操作は、SSL セッションキー (クライアントキー交換メッセージ) の交換に関連付けられています。クライアントセッションがしばらくアイドル状態になってから再開されると、通常、SSL ハンドシェイクが最初からやり直されます。セッション再利用を有効にすると、クライアントから受け取ったセッション再開要求に対するセッション鍵の交換が回避されます。
NetScalerアプライアンスでは、セッションの再利用がデフォルトで有効になっています。この機能を有効にすると、サーバーの負荷が軽減され、応答時間が短縮され、サーバーがサポートできる 1 秒あたりの SSL トランザクション (TPS) の数が増加します。
CLI を使用してセッションの再利用を設定する
コマンドプロンプトで次のコマンドを入力して、セッションの再利用を構成し、構成を確認します。
set ssl vserver <vServerName> -sessReuse ( ENABLED | DISABLED ) -sessTimeout <positive_integer>
show ssl vserver <vServerName>
<!--NeedCopy-->
例:
set ssl vserver vs-ssl -sessreuse enabled -sesstimeout 600
Done
show ssl vserver vs-ssl
Advanced SSL configuration for VServer vs-ssl:
DH: DISABLED
Ephemeral RSA: ENABLED Refresh Count: 1000
Session Reuse: ENABLED Timeout: 600 seconds
Cipher Redirect: DISABLED
SSLv2 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
SSLv2: DISABLED SSLv3: ENABLED TLSv1.0: ENABLED TLSv1.2: ENABLED TLSv1.2: ENABLED
1) CertKey Name: Auth-Cert-1 Server Certificate
1) Cipher Name: DEFAULT
Description: Predefined Cipher Alias
Done
<!--NeedCopy-->
GUI を使用してセッションの再利用を構成する
- Traffic Management > Load Balancing > Virtual Serversに移動して仮想サーバーを開きます。
- [ SSL パラメータ ] セクションで、[ セッション再利用を有効にする] を選択し、セッションをアクティブにしておく時間を指定します。
SSL プロトコル設定
NetScalerアプライアンスは、SSLv3、TLSv1、TLSv1.1、およびTLSv1.2プロトコルをサポートしています。これらの各プロトコルは、導入環境およびアプライアンスに接続するクライアントのタイプに応じて、アプライアンス上で設定できます。
TLS プロトコルバージョン 1.0、1.1、および 1.2 は、古いバージョンの TLS/SSL プロトコルよりも安全性が高くなっています。ただし、レガシーシステムをサポートするために、多くの TLS 実装では SSLv3 プロトコルとの下位互換性が維持されています。SSLハンドシェイクでは、クライアントとNetScalerアプライアンス上で構成されているSSL仮想サーバーに共通する最も高いプロトコルバージョンが使用されます。
最初のハンドシェイク試行では、TLS クライアントはサポートしている最も高いプロトコルバージョンを提供します。ハンドシェイクが失敗した場合、クライアントはより低いプロトコルバージョンを提供します。たとえば、TLS バージョン 1.1 のハンドシェイクが成功しなかった場合、クライアントは TLSv1.0 プロトコルを提供して再ネゴシエーションを試みます。この試行が失敗した場合、クライアントは SSLv3 プロトコルを使用して再試行します。「Man in the Middle」(MITM)攻撃者は、最初のハンドシェイクを破り、SSLv3 プロトコルとの再ネゴシエーションをトリガーし、SSLv3 の脆弱性を悪用する可能性があります。このような攻撃を軽減するには、SSLv3 を無効にするか、ダウングレードされたプロトコルを使用した再ネゴシエーションを許可しないようにします。ただし、導入にレガシーシステムが含まれている場合、この方法は実用的ではない可能性があります。別の方法として、クライアント要求内のシグナリング暗号スイート値 (TLS_FALLBACK_SCSV) を認識する方法があります。
クライアントの hello メッセージの TLS_FALLBACK_SCSV 値は、クライアントが以前に上位のプロトコルバージョンで接続しようとしたことがあり、現在の要求がフォールバックであることを仮想サーバーに示します。仮想サーバがこの値を検出し、クライアントが指定したバージョンよりも新しいバージョンをサポートしている場合、接続は拒否され、致命的な警告が表示されます。ハンドシェイクは、次のいずれかの条件が満たされた場合に成功します。
- TLS_FALLBACK_SCSV 値は、クライアントの hello メッセージには含まれません。
- クライアント hello のプロトコルバージョンは、仮想サーバでサポートされる最も高いプロトコルバージョンです。
CLI を使用して SSL プロトコルサポートを設定する
コマンドプロンプトで次のコマンドを入力して SSL プロトコルサポートを構成し、構成を確認します。
set ssl vserver <vServerName> -ssl2 ( ENABLED | DISABLED ) -ssl3 ( ENABLED | DISABLED ) -tls1 ( ENABLED | DISABLED ) -tls11 ( ENABLED | DISABLED ) -tls12 ( ENABLED | DISABLED )
show ssl vserver <vServerName>
<!--NeedCopy-->
例:
set ssl vserver vs-ssl -tls11 ENABLED -tls12 ENABLED
Done
sh ssl vs vs-ssl
Advanced SSL configuration for VServer vs-ssl:
DH: DISABLED
Ephemeral RSA: ENABLED Refresh Count: 0
Session Reuse: ENABLED Timeout: 120 seconds
Cipher Redirect: DISABLED
SSLv2 Redirect: DISABLED
ClearText Port: 0
Client Auth: DISABLED
SSL Redirect: DISABLED
Non FIPS Ciphers: DISABLED
SNI: DISABLED
SSLv2: DISABLED SSLv3: ENABLED TLSv1.0: ENABLED TLSv1.1: ENABLED TLSv1.2: ENABLED
Push Encryption Trigger: Always
Send Close-Notify: YES
1 bound certificate:
1) CertKey Name: mycert Server Certificate
1 configured cipher:
1) Cipher Name: DEFAULT
Description: Predefined Cipher Alias
Done
<!--NeedCopy-->
GUI を使用して SSL プロトコルサポートを構成する
- Traffic Management > Load Balancing > Virtual Serversに移動して仮想サーバーを開きます。
- [ SSL パラメータ ] セクションで、有効にするプロトコルを選択します。
閉じる通知
クローズ通知は、SSL データ伝送の終了を示す安全なメッセージです。クローズ通知設定はグローバルレベルで必要です。この設定は、すべての仮想サーバ、サービス、およびサービスグループに適用されます。グローバル設定の詳細については、このページの「グローバル SSL パラメータ」を参照してください。
グローバル設定に加えて、close-notify パラメータを仮想サーバ、サービス、またはサービスグループレベルで設定できます。したがって、1 つのエンティティに対してパラメータを設定し、別のエンティティに対してはパラメータを設定解除できる柔軟性があります。ただし、このパラメータは必ずグローバルレベルで設定してください。そうしないと、エンティティレベルの設定は適用されません。
CLI を使用して、エンティティレベルでクローズ通知を設定する
コマンドプロンプトで、次のいずれかのコマンドを入力して close-notify 機能を構成し、構成を確認します。
- 仮想サーバレベルで構成するには、以下のように入力します。
set ssl vserver <vServerName> -sendCloseNotify ( YES | NO )
show ssl vserver <vServerName>
<!--NeedCopy-->
- をサービスレベルで設定するには、次のように入力します。
set ssl service <serviceName> -sendCloseNotify ( YES | NO )
show ssl service <serviceName>
<!--NeedCopy-->
- サービスグループレベルで設定するには、次のように入力します。
set ssl serviceGroup <serviceGroupName> -sendCloseNotify ( YES | NO )
show ssl serviceGroup <serviceGroupName>
<!--NeedCopy-->
例:
set ssl vserver sslvsvr -sendCloseNotify YES
Done
<!--NeedCopy-->
GUI を使用してエンティティレベルでクローズ通知機能を設定する
- Traffic Management > Load Balancing > Virtual Serversに移動して仮想サーバーを開きます。
- [ SSL パラメータ ] セクションで、[ クローズ通知を送信] を選択します。
グローバル SSL パラメータ
SSL 設定を高度にカスタマイズすることで、特定の問題に対処できます。 set ssl parameter
コマンドまたは構成ユーティリティを使用して、次の項目を指定できます。
- SSL トランザクションに使用される量子サイズ。
- CRL メモリサイズ。
- OCSP キャッシュサイズ。
- SSL 再ネゴシエーションを拒否する
- 復号化されたレコード、暗号化されたレコード、またはすべてのレコードに PUSH フラグを設定します。
- クライアントが 1 つのドメインに対してハンドシェイクを開始し、別のドメインに対して HTTP 要求を送信した場合は、要求をドロップします。
- 暗号化がトリガーされるまでの時間を設定します。
注:指定した時刻は、
set ssl vserver
コマンドまたは構成ユーティリティを使用してタイマーベースの暗号化を設定する場合にのみ適用されます。 - NDCPP コンプライアンス証明書チェック — アプライアンスがクライアント (バックエンド接続) として機能する場合に適用されます。SSL 証明書に SAN が存在する場合は、証明書の検証時にコモンネームを無視します。
- MPX 14000などのCaviumチップベースのアプライアンスの異種クラスタと、パケットエンジンの数が異なるMPX 15000アプライアンスなどのIntel Coletoチップベースのアプライアンスを有効にします。
- バックエンドで安全な再ネゴシエーションを有効にします。
- 適応型SSLトラフィック制御。
CLI を使用してグローバル SSL パラメータを設定する
コマンドプロンプトで次のコマンドを入力して、SSL の詳細設定を構成し、構成を確認します。
set ssl parameter [-quantumSize <quantumSize>] [-crlMemorySizeMB <positive_integer>] [-strictCAChecks (YES | NO)] [-sslTriggerTimeout <positive_integer>] [-sendCloseNotify (YES | NO)] [-encryptTriggerPktCount <positive_integer>] [-denySSLReneg <denySSLReneg>] [-insertionEncoding (Unicode|UTF-8)] [-ocspCacheSize <positive_integer>][- pushFlag <positive_integer>] [- dropReqWithNoHostHeader (YES | NO)] [-pushEncTriggerTimeout <positive_integer>] [-ndcppComplianceCertCheck ( YES | NO)] [-heterogeneousSSLHW (ENABLED | DISABLED )]
show ssl parameter
<!--NeedCopy-->
例:
set ssl parameter -quantumSize 8 -crlMemorySizeMB 256 -strictCAChecks no -ssltriggerTimeout 100 -sendClosenotify no -encryptTriggerPktCount 45 -denySSLReneg NONSECURE -insertionEncoding unicode -ocspCacheSize 10 -pushFlag 3 -dropReqWithNoHostHeader YES -pushEncTriggerTimeout 100 ms -ndcppComplianceCertCheck YES
Done
show ssl parameter
Advanced SSL Parameters
-----------------------
SSL quantum size : 8 KB
Max CRL memory size : 256 MB
Strict CA checks : NO
Encryption trigger timeout : 100 ms
Send Close-Notify : NO
Encryption trigger packet count : 45
Deny SSL Renegotiation : NONSECURE
Subject/Issuer Name Insertion Format : Unicode
OCSP cache size : 10 MB
Push flag : 0x3 (On every decrypted and encrypted record)
Strict Host Header check for SNI enabled SSL sessions : YES
PUSH encryption trigger timeout : 100 ms
Crypto Device Disable Limit : 0
Global undef action for control policies : CLIENTAUTH
Global undef action for data policies : NOOP
Default profile : DISABLED
SSL Insert Space in Certificate Header : YES
Disable TLS 1.1/1.2 for SSL_BRIDGE secure monitors : NO
Disable TLS 1.1/1.2 for dynamic and VPN services : NO
Software Crypto acceleration CPU Threshold : 0
Hybrid FIPS Mode : DISABLED
Signature and Hash Algorithms supported by TLS1.2 : ALL
SSL Interception Error Learning and Caching : DISABLED
SSL Interception Maximum Error Cache Memory : 0 Bytes
NDCPP Compliance Certificate Check : YES
Heterogeneous SSL HW (Cavium and Intel Based) : ENABLED
Done
<!--NeedCopy-->
GUI を使用して ndCPP 準拠証明書チェックを構成する
-
[ トラフィック管理] > [SSL ] に移動し、[ 設定] グループで [ SSL の詳細設定の変更] を選択します。
-
[ NDCPP 準拠証明書チェック]を選択します。[OK] をクリックします。
NetScalerアプライアンスのバックエンドでの安全な再ネゴシエーションのサポート
注: この機能は、リリース 13.0 ビルド 58.x 以降でサポートされています。以前のリリースおよびビルドでは、非セキュアな再ネゴシエーションのみがバックエンドでサポートされていました。
この機能は、次のプラットフォームでサポートされています。 • VPX • N2 または N3 チップを含む MPX プラットフォーム • Intel Coleto SSL チップベースのプラットフォーム
この機能は FIPS プラットフォームではまだサポートされていません。
ADC アプライアンスのバックエンドでは、セキュアな再ネゴシエーションはデフォルトで拒否されます。つまり、 denySSLReneg
パラメータは ALL (デフォルト) に設定されます。
バックエンドでセキュアな再ネゴシエーションを許可するには、次のいずれかのdenySSLReneg
パラメータ設定を選択します。
- いいえ
- FRONTEND_CLIENT
- FRONTEND_CLIENTSERVER
- NONSECURE
CLI を使用してセキュアな再ネゴシエーションを有効にする
コマンドプロンプトで入力します:
set ssl parameter -denySSLReneg <denySSLReneg>
例:
set ssl parameter -denySSLReneg NONSECURE
Done
sh ssl parameter
Advanced SSL Parameters
-----------------------
SSL quantum size : 8 KB
Max CRL memory size : 256 MB
Strict CA checks : NO
Encryption trigger timeout : 100 ms
Send Close-Notify : YES
Encryption trigger packet count : 45
Deny SSL Renegotiation : NONSECURE
Subject/Issuer Name Insertion Format : Unicode
OCSP cache size : 10 MB
Push flag : 0x0 (Auto)
Strict Host Header check for SNI enabled SSL sessions : NO
Match HTTP Host header with SNI : CERT
PUSH encryption trigger timeout : 1 ms
Crypto Device Disable Limit : 0
Global undef action for control policies : CLIENTAUTH
Global undef action for data policies : NOOP
Default profile : ENABLED
SSL Insert Space in Certificate Header : YES
Disable TLS 1.1/1.2 for SSL_BRIDGE secure monitors : NO
Disable TLS 1.1/1.2 for dynamic and VPN services : NO
Software Crypto acceleration CPU Threshold : 0
Hybrid FIPS Mode : DISABLED
Signature and Hash Algorithms supported by TLS1.2 : ALL
SSL Interception Error Learning and Caching : DISABLED
SSL Interception Maximum Error Cache Memory : 0 Bytes
NDCPP Compliance Certificate Check : NO
Heterogeneous SSL HW (Cavium and Intel Based) : DISABLED
Crypto Operation Queue Limit : 150%
Done
<!--NeedCopy-->
GUI を使用してセキュアな再ネゴシエーションを有効にする
- [ トラフィック管理] > [SSL] > [高度な SSL 設定の変更] に移動します。
-
[ SSL 再ネゴシエーションの拒否 ] を ALL 以外の値に設定します。
アダプティブ SSL トラフィック制御
注: この機能は、リリース 13.0 ビルド 58.x 以降でサポートされています。
アプライアンスで大量のトラフィックが受信され、暗号アクセラレーションキャパシティがいっぱいになると、アプライアンスは後で処理するために接続のキューイングを開始します。現在、このキューのサイズは 64 K に固定されており、この値を超えるとアプライアンスは接続のドロップを開始します。
ユーザーは、実際の容量に対するパーセンテージの値を設定できます。その結果、キュー内の要素の数が、適応的かつ動的に計算された制限を超えると、アプライアンスは新しい接続をドロップします。このアプローチは、着信 SSL 接続を制御し、アプライアンスでの過剰なリソース消費やその他の障害(負荷分散モニタリングの障害やセキュアなアプリケーションへの応答の遅延など)を防止します。
キューが空の場合、アプライアンスは引き続き接続を受け入れることができます。キューが空でない場合、暗号システムは容量に達しており、アプライアンスは接続のキューイングを開始します。
制限は次に基づいて計算されます。
- アプライアンスの実際の容量。
- 実際のキャパシティに対するパーセンテージとしてユーザーが設定した値。デフォルト値は 150% に設定されています。
たとえば、アプライアンスの実際のキャパシティが 1 秒あたり 1000 オペレーションで、デフォルトのパーセンテージが設定されている場合、アプライアンスが接続を切断するまでの制限は 1500(1000 の 150%)です。
CLI を使用してオペレーションキュー制限を設定するには
コマンドプロンプトで入力します:
set ssl parameter -operationQueueLimit <positive_integer>
Operation Queue Limit:暗号化操作キューの容量に対するパーセンテージの制限。この値を超えると、キューが削減されるまで新しい SSL 接続が受け入れられません。デフォルト値:150。最小値:0。最大値は 10000 です。
GUI を使用して操作キュー制限を設定するには
- [ トラフィック管理] > [SSL] に移動します。
- [ 設定] で、[ SSL の詳細設定の変更] をクリックします。
- [ 操作キューの制限] に値を入力します。デフォルトは 150 です。
-
[OK] をクリックします。
異機種混在クラスタの展開
SSLパラメーター「異種SSL HW」を有効に設定すると、異なる数のパケットエンジンを使用してNetScaler MPXアプライアンスの異種クラスター展開を構成できます。たとえば、Caviumチップベースのアプライアンス(MPX 14000または同様のもの)とIntel Coletoチップベースのアプライアンス(MPX 15000または同様のもの)のクラスタを形成するには、SSLパラメータ「異種SSL HW」を有効にします。同じチップを使用してプラットフォームのクラスタを形成するには、このパラメータのデフォルト値(DISABLED)を維持します。
注:
異機種混在クラスタでは、次の機能はサポートされていません。
- NetScaler SDXアプライアンスでホストされているVPXインスタンス。
- 仮想サーバー、サービス、サービスグループ、内部サービスなどの SSL エンティティの SSLv3 プロトコル。
- ソフトウェア暗号加速CPUしきい値(ハードウェアとソフトウェアを使用してECDSAおよびECDHE暗号のパフォーマンスを向上させます)。
異機種混在クラスタでサポートされるプラットフォームの詳細については、「https://docs.citrix.com/en-us/citrix-adc/current-release/clustering/support-for-heterogeneous-cluster.html」を参照してください 。
CLI を使用した異機種クラスターの有効化
コマンドプロンプトで入力します:
set ssl parameter -heterogeneousSSLHW ENABLED
GUI を使用した異機種混在クラスタの有効化
- [ トラフィック管理] > [SSL ] に移動し、[ 設定] グループで [ SSL の詳細設定の変更] を選択します。
-
[ 異機種混在 SSL HW] を選択します。[OK] をクリックします。
PUSH フラグベースの暗号化トリガーメカニズム
PSH TCP フラグに基づく暗号化トリガメカニズムにより、次のことが可能になりました。
- PSH フラグが設定された連続したパケットを 1 つの SSL レコードにマージするか、PSH フラグを無視します。
-
set ssl parameter -pushEncTriggerTimeout <positive_integer>
コマンドを使用してタイムアウト値をグローバルに設定する、タイマーベースの暗号化を実行します。
CLI を使用して PUSH フラグベースの暗号化を設定する
コマンドプロンプトで次のコマンドを入力して PUSH フラグベースの暗号化を構成し、構成を確認します。
set ssl vserver <vServerName> [-pushEncTrigger <pushEncTrigger>]
show ssl vserver
<!--NeedCopy-->
例:
set ssl vserver vserver1 -pushEncTrigger always
Done
sh ssl vserver vserver1
Advanced SSL configuration for VServer vserver1:
DH: DISABLED
DH Private-Key Exponent Size Limit: DISABLED Ephemeral RSA: ENABLED Refresh Count: 0
Session Reuse: ENABLED Timeout: 120 seconds
Cipher Redirect: DISABLED
SSLv2 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
SSLv2: 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) Cipher Name: DEFAULT
Description: Default cipher list with encryption strength >= 128bit
Done
<!--NeedCopy-->
GUI を使用して PUSH フラグベースの暗号化を構成する
- [ トラフィック管理] > [負荷分散] > [仮想サーバー ] に移動し、SSL 仮想サーバーを開きます。
- [ SSL パラメータ ] セクションの [ PUSH 暗号化トリガー ] リストから値を選択します。
TLS1.2 署名ハッシュアルゴリズムのサポート
NetScaler ADCアプライアンスは、TLS1.2署名ハッシュ拡張に完全に準拠しています。
SSL ハンドシェイクでは、クライアントは、サポートされている署名ハッシュアルゴリズムのリストを送信します。クライアントは、「signature_algorithm」拡張を使用して、SSL ハンドシェイクメッセージ (SKE と CCV) でどのシグニチャハッシュアルゴリズムペアを使用できるかをサーバに指示します。この拡張モジュールの「拡張データ」フィールドには、クライアントの Hello メッセージに「サポートされた署名のアルゴリズム」値が含まれています。SSL ハンドシェイクは、サーバがこれらのシグニチャハッシュアルゴリズムのいずれかをサポートしている場合に処理されます。サーバーがこれらのアルゴリズムをサポートしていない場合、接続は切断されます。
同様に、サーバーがクライアント認証のためにクライアント証明書を要求した場合、証明書要求メッセージには「supported_signature_algorithms」の値が含まれます。クライアント証明書は、この署名ハッシュアルゴリズムに基づいて選択されます。
注:
NetScaler ADCアプライアンスは、クライアントに対してはサーバーとして、バックエンドサーバーに対してはクライアントとして機能します。
このアプライアンスは、フロントエンドではRSA-SHA1とRSA-SHA256のみをサポートし、バックエンドではRSA-MD5、RSA-SHA1、RSA-SHA256のみをサポートします。
MPX/SDX/VPX アプライアンスは、次の署名ハッシュの組み合わせをサポートしています。SDXアプライアンスでは、SSLチップがVPXインスタンスに割り当てられている場合、MPXアプライアンスの暗号サポートが適用されます。それ以外の場合は、VPXインスタンスの通常の暗号サポートが適用されます。
- VPXインスタンスおよびN3チップのないMPX/SDXアプライアンスでは、次のようになります。
- RSA-MD5
- RSA-SHA1
- RSA-SHA224
- RSA-SHA256
- RSA-SHA384
- RSA-SHA512
- N3 チップを搭載した MPX/SDX アプライアンスでは、次の手順を実行します。
- RSA-MD5
- RSA-SHA1
- RSA-SHA224
- RSA-SHA256
- RSA-SHA384
- RSA-SHA512
- ECDSA-SHA1
- ECDSA-SHA224
- ECDSA-SHA256
- ECDSA-SHA384
- ECDSA-SHA512
デフォルトでは、すべてのシグニチャハッシュアルゴリズムが有効になっています。ただし、次のコマンドを使用して有効にできるシグニチャハッシュアルゴリズムはごくわずかです。
set ssl parameter -sigDigestType <sigDigestType>
Parameters
sigDigestType
Signature digest algorithms supported by the appliance. The platform determines the list of algorithms supported by default.
On VPX: RSA-MD5 RSA-SHA1 RSA-SHA224 RSA-SHA256 RSA-SHA384 RSA-
SHA512
On MPX with N3 cards: RSA-MD5 RSA-SHA1 RSA-SHA224 RSA-
SHA256 RSA-SHA384 RSA-SHA512 ECDSA-SHA1 ECDSA-SHA224 ECDSA-
SHA256 ECDSA-SHA384 ECDSA-SHA512
Other MPX Platforms: RSA-MD5 RSA-SHA1 RSA-SHA224 RSA-SHA256 RSA-SHA384 RSA-
SHA512.
set ssl parameter -sigDigestType RSA-SHA224 RSA-SHA256 RSA-SHA384 RSA-SHA512
<!--NeedCopy-->
ピア証明書を検証する
RFC 5246 によると、ピア証明書は Client Hello 拡張に含まれる署名ハッシュアルゴリズムのいずれかを使用して署名される必要があります。 strictSigDigestCheck
パラメータを使用できます。クライアントから送信されたシグニチャハッシュリストに応じて、strictSigDigestCheck
を有効にすると、アプライアンスは Client Hello 拡張機能に記載されているシグニチャハッシュアルゴリズムのいずれかによって署名された証明書を返します。ピアに適切な証明書がない場合、接続は切断されます。このパラメータを無効にすると、ピア証明書でシグニチャハッシュはチェックされません。
SSL 仮想サーバおよびサービスでは、厳密なシグニチャダイジェストチェックを設定できます。SSL 仮想サーバーでこのパラメーターを有効にする場合、サーバーから送信されるサーバー証明書は、Client Hello 拡張機能にリストされている署名ハッシュアルゴリズムのいずれかによって署名されている必要があります。クライアント認証が有効な場合、サーバーが受信したクライアント証明書は、サーバーから送信された証明書要求にリストされている署名ハッシュアルゴリズムのいずれかを使用して署名されている必要があります。
SSL サービスでこのパラメーターを有効にする場合、クライアントが受信するサーバー証明書は、Client Hello 拡張機能にリストされている署名ハッシュアルゴリズムのいずれかによって署名されている必要があります。クライアント証明書は、証明書要求メッセージに記載されている署名ハッシュアルゴリズムのいずれかを使用して署名されている必要があります。
デフォルトプロファイルが有効な場合は、このプロファイルを使用して、SSL 仮想サーバ、SSL サービス、および SSL プロファイルに対して厳密なシグニチャダイジェストチェックを設定できます。
CLI を使用して SSL 仮想サーバー、サービス、またはプロファイルに厳密な署名ダイジェストチェックを設定します
コマンドプロンプトで入力します:
set ssl vserver <vServerName> -strictSigDigestCheck ( ENABLED | DISABLED )
set ssl service <serviceName> -strictSigDigestCheck ( ENABLED | DISABLED )
set ssl profile <name>-strictSigDigestCheck ( ENABLED | DISABLED )
Parameters
strictSigDigestCheck
Check whether peer entity certificate is signed using one of the signature-hash algorithms supported by the NetScaler appliance.
Possible values: ENABLED, DISABLED
Default: DISABLED
<!--NeedCopy-->
例:
set ssl vserver v1 –strictSigDigestCheck Enabled
set ssl service s1 –strictSigDigestCheck Enabled
set ssl profile p1 –strictSigDigestCheck Enabled
<!--NeedCopy-->
重要:
DH、ECDHE、または ECDSA 暗号がアプライアンスに設定されている場合、SKE メッセージは、クライアントリストとアプライアンスに設定されたリストに共通するシグニチャハッシュの 1 つを使用して署名する必要があります。共通の署名ハッシュがない場合、接続は切断されます。
ADC 管理者 UI アクセス用に SSL を構成する
構成ユーティリティへのHTTPSアクセスおよびセキュアなリモートプロシージャコールには、証明書とキーのペアが必要です。NetScaler MPXアプライアンスまたはVPX仮想アプライアンスでは、証明書とキーのペアが自動的に内部サービスにバインドされます。ただし、この証明書はブラウザによって信頼されていない可能性があります。エラーなしで認証を完了するには、ブラウザに有効な CA 証明書をアップロードする必要があります。
CLIを使用してセキュアなHTTPSの構成
CLI を使用してセキュア HTTPS を設定するには、次の手順に従います。
-
証明書とキーのペアを追加します。
add certkey server -cert servercert -key serverkey <!--NeedCopy-->
-
この証明書とキーのペアを次の内部サービスにバインドします。
bind ssl service nshttps-127.0.0.1-443 -certkeyname server bind ssl service nshttps-::11-443 -certkeyname server <!--NeedCopy-->
GUIを使用して安全なHTTPSを構成する
GUIを使用して安全なHTTPSを構成するには、次の手順に従います。
- [Traffic Management ]> [SSL] > [Certificates] に移動します。
- 詳細ペインで、[ インストール] をクリックします。
- [ 証明書のインストール ] ダイアログボックスで、証明書の詳細を入力します。
- [ インストール] をクリックし、[ 閉じる] をクリックします。
- [Traffic Management]>[Load Balancing]>[Services] の順に移動します。
- 詳細ウィンドウの [ 操作 ] タブで、[ 内部サービス] をクリックします。
- リストから
nshttps-127.0.0.1-443
を選択し、[ 開く] をクリックします。 - [ SSL 設定 ]タブの[ 使用可能 ]ペインで、手順 4 で作成した証明書を選択し、[ バインド]をクリックして、[ OK]をクリックします。
- リストから
nshttps-::11-443
を選択し、[ 開く] をクリックします。 - [ SSL 設定 ]タブの[ 使用可能 ]ペインで、手順 4 で作成した証明書を選択し、[ バインド]をクリックして、[ OK]をクリックします。
- [OK] をクリックします。