SSLプロファイルインフラストラクチャ
SSLv3 と RC4 実装の脆弱性により、ネットワーク接続のセキュリティ設定をネゴシエートするために最新の暗号とプロトコルを使用する必要性が強調されています。数千の SSL エンドポイントで SSLv3 を無効にするなど、設定の変更を実装するのは面倒なプロセスです。そのため、SSL エンドポイント設定の一部であった設定は、デフォルトの暗号とともに SSL プロファイルに移動されました。暗号のサポートを含む設定の変更を実装するには、エンティティにバインドされているプロファイルを変更するだけで済みます。
デフォルトのフロントエンドおよびデフォルトのバックエンド SSL プロファイルには、古いプロファイルに含まれていた設定に加えて、デフォルトの暗号と ECC 曲線がすべて含まれています。デフォルトプロファイルの出力例は付録に記載されています。[Enable Default Profile] 操作により、デフォルトのフロントエンドプロファイルがすべてのフロントエンドエンティティに自動的にバインドされ、デフォルトのバックエンドプロファイルがすべてのバックエンドエンティティに自動的にバインドされます。デフォルトのプロファイルは、導入環境に合わせて変更できます。また、カスタムプロファイルを作成して SSL エンティティにバインドすることもできます。
フロントエンドプロファイルには、フロントエンドエンティティ (クライアントからリクエストを受け取るエンティティ) に適用されるパラメーターが含まれています。通常、このエンティティはSSL仮想サーバー、透過SSLサービス、またはNetScaler ADCアプライアンス上の内部サービスです。バックエンドプロファイルには、バックエンドエンティティ(クライアント要求をバックエンドサーバーに送信するADCアプライアンス上のエンティティ)に適用されるパラメーターが含まれています。通常、このエンティティはNetScaler ADCアプライアンス上のSSLサービスまたはサービスグループです。サポートされていないパラメータを設定しようとすると、エラーERROR: Specified parameters are not applicable for this type of SSL profile
が表示されます。CRL メモリサイズ、OCSP キャッシュサイズ、デファクション解除制御、およびデファクション解除データなど、一部の SSL パラメータはエンティティに依存しないため、どのプロファイルにも含まれません。これらのパラメータは、[ トラフィック管理] > [SSL] > [高度な SSL 設定]にあります。セキュア・モニターでサポートされている SSL パラメーターの詳細については、「 セキュア・モニターでの SSL パラメーターの設定」を参照してください。
SSL プロファイルは次の操作をサポートします。
- 追加:NetScaler アプライアンスに SSL プロファイルを作成します。プロファイルがフロントエンドかバックエンドかを指定します。デフォルトはフロントエンドです。
- 設定:— 既存のプロファイルの設定を変更します。
- Unset: 指定されたパラメータをデフォルト値に設定します。パラメータを何も指定しない場合、エラーメッセージが表示されます。エンティティのプロファイルを設定解除すると、プロファイルはエンティティからバインド解除されます。
- 削除:プロファイルを削除します。どのエンティティでも使用されているプロファイルは削除できません。設定をクリアすると、すべてのエンティティが削除されます。その結果、プロファイルも削除されます。
- バインド:プロファイルを SSL エンティティにバインドします。
- バインド解除:SSL エンティティからプロファイルをバインド解除します。
- 表示:NetScalerアプライアンスで使用可能なすべてのプロファイルが表示されます。プロファイル名を指定すると、そのプロファイルの詳細が表示されます。エンティティを指定すると、そのエンティティに関連付けられているプロファイルが表示されます。
重要:
SSL プロファイルは SSL パラメータよりも優先されます。つまり、
set ssl parameter
コマンドを使用して SSL パラメータを設定し、後でプロファイルを SSL エンティティにバインドすると、プロファイル内の設定が優先されます。アップグレード後、デフォルトプロファイルを有効にすると、変更を元に戻すことはできません。つまり、プロファイルは無効にできません。プロファイルを有効にする前に、構成を保存し、構成ファイル (ns.conf) のコピーを作成します。ただし、デフォルトプロファイルの機能を使用しない場合は、引き続き古い SSL プロファイルを使用できます。これらのプロファイルの詳細については、 レガシー SSL プロファイルを参照してください。
GUI と CLI では、デフォルトプロファイルを有効にすると確認プロンプトが追加され、誤って有効になるのを防ぐことができます。
TLSv1.2より前のプロトコルは、SSL内部サービスでは無効になっています。デフォルト (拡張) プロファイルが有効になっている場合、 ns_default_ssl_profile_internal_frontend_service
プロファイルは SSL 内部サービスにバインドされ、SSLv3、TLSv1.0、および TLSv1.1 プロトコルはプロファイルで無効になります。
コマンド:
set ssl parameter -defaultProfile ENABLED
Save your configuration before enabling the Default profile. You cannot undo the changes. Are you sure you want to enable the Default profile? [Y/N]Y
Done
<!--NeedCopy-->
デフォルトでは、 グローバルパラメータと呼ばれる一部の SSL パラメータがすべてのSSL エンドポイントに適用されます。ただし、プロファイルが SSL エンドポイントにバインドされている場合、グローバルパラメータは適用されません。プロファイルで指定されている設定が代わりに適用されます。
注意事項
- プロファイルは複数の仮想サーバにバインドできますが、1 つの仮想サーバにバインドできるプロファイルは 1 つだけです。
- 仮想サーバにバインドされているプロファイルを削除するには、まずプロファイルのバインドを解除します。
- 1 つの暗号または暗号グループは、異なる優先順位で複数のプロファイルにバインドできます。
- プロファイルには、異なる優先順位でバインドされた複数の暗号および暗号グループを含めることができます。
- 暗号グループへの変更は、すべてのプロファイルと、プロファイルの 1 つがバインドされているすべての仮想サーバに即座に反映されます。
- 暗号スイートが暗号グループの一部である場合は、プロファイルから暗号スイートを削除する前に、暗号グループを編集してその暗号スイートを削除します。
- プロファイルにアタッチされた暗号スイートまたは暗号グループにプライオリティを割り当てなかった場合、プロファイル内で最も低いプライオリティが割り当てられます。
- 既存の暗号グループと暗号スイートから、カスタム暗号グループ (ユーザー定義暗号グループとも呼ばれる) を作成できます。暗号グループ A を作成し、既存の暗号グループ X と Y をこの順序で追加すると、Y は X よりも低い優先度で割り当てられます。つまり、最初に追加されたグループの方が優先度が高くなります。
- 暗号スイートが同じプロファイルにアタッチされた 2 つの暗号グループの一部である場合、その暗号スイートは 2 番目の暗号グループの一部として追加されません。プライオリティの高い暗号スイートは、トラフィックが処理されるときに有効になります。
- 暗号グループはプロファイル内で展開されません。その結果、設定ファイル (ns.conf) の行数が大幅に削減されます。たとえば、それぞれ 15 個の暗号を含む 2 つの暗号グループが 1,000 台の SSL 仮想サーバーにバインドされている場合、拡張により、構成ファイルに 30*1000 個の暗号関連エントリが追加されます。新しいプロファイルでは、プロファイルにバインドされた暗号グループごとに 1 つずつ、エントリが 2 つだけになります。
- 既存の暗号と暗号グループからユーザー定義の暗号グループを作成するのは、コピーアンドペースト操作です。元のグループに加えた変更は、新しいグループには反映されません。
- ユーザー定義の暗号グループには、そのグループが属するすべてのプロファイルが一覧表示されます。
- プロファイルには、バインドされているすべての SSL 仮想サーバ、サービス、およびサービスグループが一覧表示されます。
- デフォルトの SSL プロファイル機能が有効になっている場合は、このプロファイルを使用して SSL エンティティの任意の属性を設定または変更します。たとえば、仮想サーバ、サービス、サービスグループ、内部サービスなどです。
CLI を使用して設定を保存する
コマンドプロンプトで入力します:
save config
shell
root@ns# cd /nsconfig
root@ns# cp ns.conf ns.conf.NS<currentreleasenumber><currentbuildnumber>
<!--NeedCopy-->
例:
save config
shell
root@ns# cd /nsconfig
root@ns# cp ns.conf ns.conf.NS.11.0.jun.16
<!--NeedCopy-->
既定のプロファイルを有効にする
重要:
ソフトウェアをアップグレードする前に設定を保存し、デフォルトプロファイルを有効にします。
リリース 11.1 ビルド 51.x から、GUI および CLI では、デフォルトプロファイルを有効にすると、誤って有効にしないように、確認プロンプトが表示されます。
コマンド: 次のコマンドは、デフォルトプロファイルを有効にし、プロファイルが既にバインドされている SSL エンティティにこのプロファイルをバインドします。つまり、プロファイル (P1 など) がすでに SSL エンティティにバインドされている場合、P1 は既定のフロントエンドプロファイルまたは既定のバックエンドプロファイルに置き換えられます。古いプロファイル (P1) は削除されません。このプロファイルは拡張 SSL プロファイルになり、以前の設定、暗号、ECC 曲線が含まれています。デフォルトのプロファイルを使用しない場合は、P1 を SSL エンティティに明示的にバインドできます。
set ssl parameter -defaultProfile ENABLED
Save your configuration before enabling the Default profile. You cannot undo the changes. Are you sure you want to enable the Default profile? [Y/N]Y
Done
<!--NeedCopy-->
拡張プロファイルインフラストラクチャをサポートするビルドにソフトウェアをアップグレードし、既定のプロファイルを有効にします。
注:
レガシープロファイル (P1) がすでに SSL エンティティにバインドされている場合に、デフォルトプロファイルを有効にすると、以前のバインドがデフォルトプロファイルによって上書きされます。つまり、デフォルトプロファイルは SSL エンティティにバインドされます。デフォルトプロファイルをバインドしない場合は、P1 を SSL エンティティに再度バインドする必要があります。
1 回の操作 ([Enable Default Profile or
set ssl parameter -defaultProfile ENABLED
]) で、既定のフロントエンドプロファイルと既定のバックエンドプロファイルの両方を有効化 (バインド) できます。
デフォルトプロファイルの一部であるパラメータ
次のコマンドを実行して、デフォルトのフロントエンドプロファイルとバックエンドプロファイルに含まれるパラメーターを一覧表示します。
sh ssl profile ns_default_ssl_profile_frontend
sh ssl profile ns_default_ssl_profile_backend
<!--NeedCopy-->
例:
> sh ssl profile ns_default_ssl_profile_frontend
1) Name: ns_default_ssl_profile_frontend (Front-End)
SSLv3: DISABLED TLSv1.0: ENABLED TLSv1.1: ENABLED TLSv1.2: ENABLED TLSv1.3: DISABLED
Client Auth: DISABLED
Use only bound CA certificates: DISABLED
Strict CA checks: NO
Session Reuse: ENABLED Timeout: 120 seconds
DH: DISABLED
DH Private-Key Exponent Size Limit: DISABLED Ephemeral RSA: ENABLED Refresh Count: 0
Deny SSL Renegotiation ALL
Non FIPS Ciphers: DISABLED
Cipher Redirect: DISABLED
SSL Redirect: DISABLED
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
Push Encryption Trigger: Always
PUSH encryption trigger timeout: 1 ms
SNI: DISABLED
OCSP Stapling: DISABLED
Strict Host Header check for SNI enabled SSL sessions: NO
Match HTTP Host header with SNI: CERT
Push flag: 0x0 (Auto)
SSL quantum size: 8 kB
Encryption trigger timeout 100 mS
Encryption trigger packet count: 45
Subject/Issuer Name Insertion Format: Unicode
SSL Interception: DISABLED
SSL Interception OCSP Check: ENABLED
SSL Interception End to End Renegotiation: ENABLED
SSL Interception Maximum Reuse Sessions per Server: 10
Session Ticket: DISABLED
HSTS: DISABLED
HSTS IncludeSubDomains: NO
HSTS Max-Age: 0
HSTS Preload: NO
Allow Extended Master Secret: NO
Send ALPN Protocol: NONE
ECC Curve: P_256, P_384, P_224, P_521
1) Cipher Name: DEFAULT Priority :1
Description: Predefined Cipher Alias
> sh ssl profile ns_default_ssl_profile_backend
1) Name: ns_default_ssl_profile_backend (Back-End)
SSLv3: DISABLED TLSv1.0: ENABLED TLSv1.1: ENABLED TLSv1.2: ENABLED TLSv1.3: DISABLED
Server Auth: DISABLED
Use only bound CA certificates: DISABLED
Strict CA checks: NO
Session Reuse: ENABLED Timeout: 300 seconds
DH: DISABLED
Ephemeral RSA: DISABLED
Deny SSL Renegotiation ALL
Non FIPS Ciphers: DISABLED
Cipher Redirect: DISABLED
SSL Redirect: DISABLED
Send Close-Notify: YES
Strict Sig-Digest Check: DISABLED
Push Encryption Trigger: Always
PUSH encryption trigger timeout: 1 ms
SNI: DISABLED
OCSP Stapling: DISABLED
Strict Host Header check for SNI enabled SSL sessions: NO
Push flag: 0x0 (Auto)
SSL quantum size: 8 kB
Encryption trigger timeout 100 mS
Encryption trigger packet count: 45
Allow Extended Master Secret: NO
ECC Curve: P_256, P_384, P_224, P_521
1) Cipher Name: DEFAULT_BACKEND Priority :1
Description: Predefined Cipher Alias
Done
<!--NeedCopy-->
使用例
デフォルトプロファイルを有効にすると、すべての SSL エンドポイントにバインドされます。既定のプロファイルは編集可能です。デプロイメントでほとんどのデフォルト設定が使用され、一部のパラメータしか変更されない場合は、デフォルトプロファイルを編集できます。変更内容は、すべてのエンドポイントに即座に反映されます。また、カスタムパラメータとデフォルトパラメータを使用してカスタム SSL プロファイルを作成し、SSL エンティティにバインドすることもできます。
次のフローチャートは、実行する必要のある手順を説明しています。
-
ソフトウェアのアップグレードについては、「 システムソフトウェアのアップグレード」を参照してください。
-
CLI または GUI を使用して、デフォルトプロファイルを有効にします。
- コマンドラインで、次のように入力します。
set ssl parameter -defaultProfile ENABLED
- GUI を使用する場合は、[ トラフィック管理 ] > [SSL] > [ SSLの詳細設定の変更] に移動し、下にスクロールして [ デフォルトプロファイルを有効にする] を選択します。
- コマンドラインで、次のように入力します。
アップグレード前にプロファイルがエンドポイントにバインドされていなかった場合、デフォルトのプロファイルが SSL エンドポイントにバインドされます。アップグレード前にプロファイルがエンドポイントにバインドされていた場合、アップグレード後に同じプロファイルがバインドされ、デフォルトの暗号がプロファイルに追加されます。
-
(オプション) デフォルトプロファイルの設定を手動で変更します。
- コマンドラインで、:
set ssl profile <name>
に続けて変更するパラメータを入力します。 - GUI を使用したい場合は、[ システム ] > [ プロファイル] に移動します。 SSL プロファイルで、プロファイルを選択して[ 編集] をクリックします。
- コマンドラインで、:
SSL プロファイルパラメータ
SSL プロファイルでは、次の SSL パラメータを設定できます。これらのパラメータの一部は、SSL 仮想サーバーで設定できます。SSL 仮想サーバーパラメーターの詳細については、「 SSL 仮想サーバーパラメータ」を参照してください。
NetScalerアプライアンスのバックエンドでの安全な再ネゴシエーションのサポート
この機能は次のプラットフォームでサポートされています。
- VPX
- N2 または N3 チップを含む MPX プラットフォーム
- Intel Coleto SSL チップベースのプラットフォーム
この機能は FIPS プラットフォームではまだサポートされていません。
ADC アプライアンスのバックエンドでは、セキュアな再ネゴシエーションはデフォルトで拒否されます。つまり、 denySSLReneg
パラメータは ALL (デフォルト) に設定されます。
バックエンドでセキュアな再ネゴシエーションを許可するには、次のいずれかのdenySSLReneg
パラメータ設定を選択します。
- いいえ
- FRONTEND_CLIENT
- FRONTEND_CLIENTSERVER
- NONSECURE
CLI を使用してセキュアな再ネゴシエーションを有効にする
コマンドプロンプトで入力します:
set ssl profile <name> -denySSLReneg <denySSLReneg>
例:
set ssl profile ns_default_ssl_profile_backend -denySSLReneg NONSECURE
Done
sh ssl profile ns_default_ssl_profile_backend
1) Name: ns_default_ssl_profile_backend (Back-End)
SSLv3: DISABLED TLSv1.0: ENABLED TLSv1.1: ENABLED TLSv1.2: ENABLED TLSv1.3: DISABLED
Server Auth: DISABLED
Use only bound CA certificates: DISABLED
Strict CA checks: NO
Session Reuse: ENABLED Timeout: 300 seconds
DH: DISABLED
Ephemeral RSA: DISABLED
Deny SSL Renegotiation NONSECURE
Non FIPS Ciphers: DISABLED
Cipher Redirect: DISABLED
SSL Redirect: DISABLED
Send Close-Notify: YES
Strict Sig-Digest Check: DISABLED
Push Encryption Trigger: Always
PUSH encryption trigger timeout: 1 ms
SNI: DISABLED
OCSP Stapling: DISABLED
Strict Host Header check for SNI enabled SSL sessions: NO
Push flag: 0x0 (Auto)
SSL quantum size: 8 kB
Encryption trigger timeout 100 mS
Encryption trigger packet count: 45
ECC Curve: P_256, P_384, P_224, P_521
1) Cipher Name: DEFAULT_BACKEND Priority :2
Description: Predefined Cipher Alias
1) Service Name: s187
Done
<!--NeedCopy-->
GUI を使用してセキュアな再ネゴシエーションを有効にする
- [ システム] > [プロファイル] > [SSL プロファイル] に移動します。
- プロファイルを追加または編集します。
-
[ SSL 再ネゴシエーションの拒否 ] を ALL 以外の値に設定します。
ホストヘッダ検証
注: このパラメーターは、リリース 13.0 ビルド 52.x で導入されました。
HTTP/1.1 では、クライアントは複数のリクエストを処理するために複数の接続を使用する必要がありました。HTTP/2 を使用すると、クライアントは同じ証明書の対象となるドメイン間で接続を再利用できます。SNI 対応セッションの場合、ADC アプライアンスは、この変更に対応するために HTTP ホストヘッダーの検証方法を制御できる必要があります。以前のビルドでは、パラメータが有効 (「Yes」に設定) され、リクエストに SNI 対応セッションのホストヘッダーが含まれていない場合、リクエストはドロップされていました。パラメータが無効になっている(「No」に設定されている)場合、アプライアンスは検証を実行しませんでした。この検証をより適切に制御できるように、SSL プロファイルと SSLグローバルパラメータに新しいパラメータSNIHTTPHostMatch
が追加されました。このパラメータには、CERT、STRICT、NONE の 3 つの値を指定できます。これらの値は、SNI が有効なセッションでのみ次のように機能します。SSL 仮想サーバまたは仮想サーバにバインドされたプロファイルで SNI を有効にする必要があり、HTTP 要求にはホストヘッダーが含まれている必要があります。
- CERT-要求内のホストヘッダー値が、この SSL セッションの確立に使用された証明書によってカバーされている場合、 接続が転送されます。
- STRICT-要求内のホストヘッダー値が、SSL 接続の Client Hello メッセージで渡されたサーバ名の値と一致する場合にのみ、接続が転送されます。
- NO-ホストヘッダー値は検証されません。
指定可能な値:いいえ、CERT、STRICT デフォルト値:CERT
新しいパラメーターSNIHTTPHostMatch
の導入により、 dropReqWithNoHostHeader
パラメーターの動作が変更されました。 dropReqWithNoHostHeader
パラメータの設定は、SNI 証明書に対するホストヘッダーの検証方法に影響しなくなりました。
CLI を使用して SSL プロファイルパラメータを設定する
コマンドプロンプトで入力します:
set ssl profile <name> [-ssllogProfile <string>] [-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>]] [-clientAuth ( ENABLED | DISABLED )[-clientCert ( Mandatory | Optional )]] [-sslRedirect ( ENABLED |
DISABLED )] [-redirectPortRewrite ( ENABLED | DISABLED )] [-ssl3 (ENABLED | DISABLED )] [-tls1 ( ENABLED | DISABLED )] [-tls11 ( ENABLED| DISABLED )] [-tls12 ( ENABLED | DISABLED )] [-tls13 ( ENABLED |DISABLED )] [-SNIEnable ( ENABLED | DISABLED )] [-ocspStapling (ENABLED | DISABLED )] [-serverAuth ( ENABLED | DISABLED )] [-commonName <string>] [-pushEncTrigger <pushEncTrigger>] [-sendCloseNotify ( YES |
NO )] [-clearTextPort <port|*>] [-insertionEncoding ( Unicode | UTF-8)] [-denySSLReneg <denySSLReneg>] [-quantumSize <quantumSize>]
[-strictCAChecks ( YES | NO )] [-encryptTriggerPktCount <positive_integer>] [-pushFlag <positive_integer>][-dropReqWithNoHostHeader ( YES | NO )] [-SNIHTTPHostMatch <SNIHTTPHostMatch>] [-pushEncTriggerTimeout <positive_integer>]
[-sslTriggerTimeout <positive_integer>] [-clientAuthUseBoundCAChain (ENABLED | DISABLED )] [-sslInterception ( ENABLED | DISABLED )][-ssliReneg ( ENABLED | DISABLED )] [-ssliOCSPCheck ( ENABLED | DISABLED )] [-ssliMaxSessPerServer <positive_integer>] [-HSTS ( ENABLED| DISABLED )] [-maxage <positive_integer>] [-IncludeSubdomains ( YES | NO )] [-preload ( YES | NO )] [-sessionTicket ( ENABLED | DISABLED )][-sessionTicketLifeTime <positive_integer>] [-sessionTicketKeyRefresh (ENABLED | DISABLED )] {-sessionTicketKeyData } [-sessionKeyLifeTime <positive_integer>] [-prevSessionKeyLifeTime <positive_integer>]
[-cipherName <string> -cipherPriority <positive_integer>][-strictSigDigestCheck ( ENABLED | DISABLED )]
[-skipClientCertPolicyCheck ( ENABLED | DISABLED )] [-zeroRttEarlyData ( ENABLED | DISABLED )] [-tls13SessionTicketsPerAuthContext
<positive_integer>] [-dheKeyExchangeWithPsk ( YES | NO )]
<!--NeedCopy-->
GUI を使用して SSL プロファイルパラメータを設定する
プロファイルを追加するには:
-
[ システム] > [プロファイル] に移動します。
-
[ SSL プロファイル] を選択します。[追加] をクリックします。
-
さまざまなパラメーターの値を指定します。
- [OK] をクリックします。
- [完了] をクリックします。
既存の SSL プロファイルを再利用するには、次の手順を実行します。
- [ システム] > [プロファイル] に移動します。
- 既存のプロファイルを選択し、[ Add] をクリックします。
- 別の名前を指定し、パラメータを変更して「 OK」をクリックします。
- [完了] をクリックします。
TLS セッションチケット拡張
SSL ハンドシェイクは CPU に負荷がかかる操作です。セッション再利用が有効な場合、既存のクライアントに対するサーバー/クライアントキー交換操作はスキップされます。ユーザーはセッションを再開できます。このアクションにより、応答時間が短縮され、サーバーがサポートできる 1 秒あたりの SSL トランザクション数が増加します。ただし、サーバーは各セッション状態の詳細を格納する必要があるため、メモリを消費し、要求がサーバー間で負荷分散されている場合は複数のサーバー間で共有することが困難になります。
NetScalerアプライアンスはセッションチケットTLS拡張をサポートしています。この拡張を使用すると、セッションの詳細がサーバーではなくクライアントに保存されます。クライアントは、クライアントの Hello メッセージにセッションチケット TLS 拡張を含めることによって、このメカニズムをサポートしていることを示す必要があります。新規クライアントの場合、この拡張機能は空です。サーバーは NewsessionTicket ハンドシェイクメッセージで新しいセッションチケットを送信します。セッションチケットは、サーバーだけが認識しているキーペアを使用して暗号化されます。サーバが今新しいチケットを発行できない場合は、通常のハンドシェイクが完了します。
この機能は、フロントエンド SSL プロファイルでのみ使用でき、アプライアンスがサーバとして機能してセッションチケットを生成する通信のフロントエンドでのみ使用できます。
制限事項
- この機能は FIPS プラットフォームではサポートされていません。
- この機能は TLS バージョン 1.1 および 1.2 でのみサポートされます。
- SSL セッション ID の永続性は、セッションチケットではサポートされていません。
CLI を使用して TLS セッションチケット拡張を有効にする
コマンドプロンプトで入力します:
set ssl profile <name> -sessionTicket (ENABLED | DISABLED ) [-sessionTicketLifeTime <positive_integer>
<!--NeedCopy-->
引数:
SessionTicket: TLS セッションチケット拡張の状態。この拡張を使用すると、RFC 5077 で定義されているように、セッションの詳細がサーバではなくクライアントに保存されます。
設定可能な値:ENABLED, DISABLED
デフォルト値: 無効
SessionTicketLifetime: セッションチケットが期限切れになり、新しい SSL ハンドシェイクが開始されるまでの時間を秒単位で指定します。
デフォルト値:300
最小値:0
最大値:172800
例:
add ssl profile profile1 -sessionTicket ENABLED -sessionTicketlifeTime 300
Done
<!--NeedCopy-->
GUI を使用して TLS セッションチケット拡張を有効にする
- System > Profilesに移動します。[ SSL プロファイル] を選択します。
- [ 追加 ] をクリックし、プロファイルの名前を指定します。
- [ セッションチケット] を選択します。
- 必要に応じて、[ セッションチケットの有効期間 (秒)] を指定します。
セッションチケットの安全な実装
TLS セッションチケットを使用することで、クライアントは短縮されたハンドシェイクを使用してサーバーへの再接続を高速化できます。ただし、セッションチケットが長期間暗号化または変更されないと、セキュリティリスクが生じる可能性があります。セッションチケットを対称鍵で暗号化することで、セッションチケットを保護できます。前方秘匿性を実現するために、セッションチケットキーが更新される時間間隔を指定できます。
アプライアンスはデフォルトでセッションチケットキーを生成します。ただし、展開内の複数のアプライアンスが互いのセッションチケットを復号化する必要がある場合は、すべて同じセッションチケットキーを使用する必要があります。したがって、すべてのアプライアンスで、同じセッションチケットキーデータを手動で設定(追加またはロード)する必要があります。セッションチケットキーデータには次の情報が含まれます。
- セッションチケット名。
- チケットの暗号化または復号化に使用されるセッション AES キー。
- チケットのダイジェストを計算するために使用されるセッション HMAC キー。
RFC 5077 で推奨されているように、長さ 64 バイトのセッションチケットキーデータを 256 ビット HMAC キーをサポートするように構成できるようになりました。下位互換性を保つため、キーの長さ 48 バイトもサポートされています。
注:
セッションチケットキーデータを手動で入力するときは、HAセットアップまたはクラスターセットアップのすべてのNetScalerアプライアンスの構成が同じであることを確認してください。
sessionTicketKeyLifeTime
このパラメータは、セッションチケットキーが更新される頻度を指定します。 prevSessionTicketKeyLifeTime
パラメータを設定して、新しいキーが生成された後、そのキーを使用してチケットを復号化するために、前のセッションチケットキーを保持する期間を指定できます。 prevSessionTicketKeyLifeTime
設定により、クライアントが短縮ハンドシェイクを使用して再接続できる時間が長くなります。たとえば、sessionTicketKeyLifeTime
が10 分、prevSessionTicketKeyLifeTime
が5分に設定されている場合、10 分後に新しいキーが生成され、すべての新しいセッションに使用されます。 ただし、以前に接続したクライアントにはさらに 5 分かかり、その間は以前に発行されたチケットが短縮されたハンドシェイクで優先されます。
CLI を使用して SSL セッションチケットデータを構成する
コマンドプロンプトで入力します:
set ssl profile <name> -sessionTicket ENABLED -sessionTicketLifeTime <positive_integer> -sessionTicketKeyRefresh ( ENABLED | DISABLED )] -sessionTicketKeyLifeTime <positive_integer> [-prevSessionTicketKeyLifeTime <positive_integer>]
<!--NeedCopy-->
引数:
SessionTicket: RFC 5077 で説明されているようにセッションチケットを使用します。初期ハンドシェイクを確立するには、CPU を集中的に使用する公開キー暗号化操作が必要です。 ENABLED を設定すると、サーバーはクライアントにセッションチケットを発行し、クライアントはこれを使用して短縮ハンドシェイクを実行できます。
指定可能な値:有効、無効。既定:無効
SessionTicketLifetime: セッションチケットの有効期間 (秒単位)。この時間が経過すると、クライアントはこのチケットを使用してセッションを再開できなくなります。
最大値は 172800 です。最小値:0。デフォルト:300。
SessionTicketKeyRefresh: セッションチケットキーの有効期間パラメータで指定された時間が経過したら、セッションチケットの暗号化または復号化に使用されるセッションチケットキーを再生成します。SessionTicket が有効な場合、自動的に有効になります。管理者がセッションチケットデータを入力すると無効になります。
指定可能な値:有効、無効。既定:有効
SessionKeyLifeTime: NetScalerアプライアンスによって発行されたセッションチケットの暗号化に使用される対称キーの有効期間(秒単位)。
最大値は 86400 です。最小値:600。デフォルト:3000
prevSessionKeyLifetime: セッションチケットキーの有効期間が終了した後も、セッションチケットの暗号化に使用された以前の対称キーが既存のクライアントに対して有効である時間(秒)。この時間内に、既存のクライアントは前のセッションチケットキーを使用してセッションを再開できます。新しいクライアントのセッションチケットは、新しい鍵を使用して暗号化されます。
最大値は 172800 です。最小値:0。デフォルト:0
例:
set ssl profile ns_default_ssl_profile_frontend -sessionTicket ENABLED -sessionTicketlifeTime 120 -sessionTicketKeyRefresh ENABLED -sessionTicketKeyLifeTime 100 -prevSessionTicketKeyLifeTime 60
Done
show ssl profile ns_default_ssl_profile_frontend
Session Ticket: ENABLED
Session Ticket Lifetime: 120 (secs)
Session Key Auto Refresh: ENABLED
Session Key Lifetime: 100 (secs)
Previous Session Key Lifetime: 60 (secs)
<!--NeedCopy-->
GUI を使用して SSL セッションチケットデータを構成する
-
[ システム ] > [ プロファイル] に移動し、[ SSL プロファイル] を選択します。
-
ns_default_ssl_profile_frontend を選択し、[ 編集] をクリックします。
-
「 基本設定 (Basic Settings )」セクションで、鉛筆アイコンをクリックし、次のパラメータを設定します。
- セッションチケット
- セッションチケットの有効期間 (秒)
- セッションチケットキーの自動更新
- セッションチケットキーの有効期間 (秒)
- 前のセッションチケットキーの有効期間 (秒)
-
[OK] をクリックします。
CLI を使用して SSL セッションチケットデータを手動で入力する
コマンドプロンプトで入力します:
set ssl profile <name> -sessionTicket ENABLED
set ssl profile <name> -sessionTicketKeyData
show ssl profile ns_default_ssl_profile_frontend
<!--NeedCopy-->
引数:
SessionTicket: RFC 5077 で説明されているセッションチケットの使用。初期ハンドシェイクを確立するには、CPU を集中的に使用する公開キー暗号化操作が必要です。 ENABLED を設定すると、サーバーはクライアントにセッションチケットを発行し、クライアントはこれを使用して短縮ハンドシェイクを実行できます。
指定可能な値:有効、無効。既定:無効
セッションチケットキーデータ: Contains the session ticket name (0–15 bytes), the session AES key used to encrypt or decrypt the session ticket (16–31 bytes), and the session HMAC key used to compute the digest of the ticket (32–63 bytes). Externally generated by an administrator and added to a NetScaler appliance.
最大長:64 バイト
例:
set ssl profile ns_default_ssl_profile_frontend -sessionTicket ENABLED
Done
set ssl profile ns_default_ssl_profile_frontend -sessionTicketKeyData 111111111111111111111111111111111111111111111111
Done
show ssl profile ns_default_ssl_profile_frontend
1) Name: ns_default_ssl_profile_frontend (Front-End)
SSLv3: ENABLED TLSv1.0: ENABLED TLSv1.1: ENABLED TLSv1.2: ENABLED
Client Auth: DISABLED
Use only bound CA certificates: DISABLED
Strict CA checks: NO
Session Reuse: ENABLED Timeout: 120 seconds
DH: DISABLED
DH Private-Key Exponent Size Limit: DISABLED Ephemeral RSA: ENABLED Refresh Count: 0
Deny SSL Renegotiation ALL
Non FIPS Ciphers: DISABLED
Cipher Redirect: DISABLED
SSL Redirect: DISABLED
Send Close-Notify: YES
Push Encryption Trigger: Always
PUSH encryption trigger timeout: 1 ms
SNI: DISABLED
OCSP Stapling: DISABLED
Strict Host Header check for SNI enabled SSL sessions: NO
Push flag: 0x0 (Auto)
SSL quantum size: 8 kB
Encryption trigger timeout 100 mS
Encryption trigger packet count: 45
Subject/Issuer Name Insertion Format: Unicode
Session Ticket: ENABLED
Session Ticket Lifetime: 300 (secs)
Session Key Auto Refresh: DISABLED
Session Key Lifetime: 3000 (secs)
Previous Session Key Lifetime: 0 (secs)
Session Key Data: 84dad1afc6d56b0deeb0a7fd7f299a207e8d8c15cdd087a5684a11a329fd732e87a0535d90883
47e8c181ba266f5c8838ae472cb3ab9255b683bf922fad32cee816c329989ef7cdeb278e93ac37882e3
ECC Curve: P_256, P_384, P_224, P_521
1) Cipher Name: DEFAULT Priority :4
Description: Predefined Cipher Alias
1) Internal Service Name (Front-End): nsrnatsip-127.0.0.1-5061
2) Internal Service Name (Front-End): nskrpcs-127.0.0.1-3009
3) Internal Service Name (Front-End): nshttps-::1l-443
4) Internal Service Name (Front-End): nsrpcs-::1l-3008
5) Internal Service Name (Front-End): nshttps-127.0.0.1-443
6) Internal Service Name (Front-End): nsrpcs-127.0.0.1-3008
7) Vserver Name: v1
Done
<!--NeedCopy-->
GUI を使用して SSL セッションチケットデータを手動で入力する
-
[ システム] > [プロファイル] に移動し、[ SSL プロファイル] を選択します。
-
ns_default_ssl_profile_frontend を選択し、[ 編集] をクリックします。
-
「 基本設定 (Basic Settings )」セクションで、鉛筆アイコンをクリックし、次のパラメータを設定します。
- セッションチケット
- セッションチケットキーデータ
- セッションチケットキーデータの確認
-
[OK] をクリックします。
NetScaler非FIPSプラットフォームでのSSLハンドシェイクの拡張マスターシークレットのサポート
拡張マスターシークレット (EMS) は、トランスポート層セキュリティ (TLS) プロトコルのオプションの拡張です。NetScalerアプライアンス上のEMSをサポートするために、フロントエンドとバックエンドの両方のSSLプロファイルに適用される新しいパラメーターが追加されました。パラメータが有効で、ピアが EMS をサポートしている場合、ADC アプライアンスは EMS 計算を使用します。ピアが EMS をサポートしていない場合、アプライアンスでパラメータが有効になっていても、EMS 計算は接続に使用されません。EMS の詳細については、RFC 7627 を参照してください。
注: EMS は、TLS プロトコルバージョン 1.0、1.1、または 1.2 を使用するハンドシェイクにのみ適用されます。
EMS のプラットフォームサポート
- Cavium N3 チップまたはIntel Coleto Creek 暗号カードのいずれかを搭載した MPX および SDX プラットフォームIntel Coleto チップには、次のプラットフォームが同梱されています。
- MPX 5900
- MPX/SDX 8900
- MPX/SDX 26000
- MPX/SDX 26000-50S
- MPS/SDX 26000-100G
- MPX/SDX 15000-50G
また、show hardware
コマンドを使用して、アプライアンスに Coleto (COL) チップと N3 チップのどちらが搭載されているかを識別することもできます。
-
暗号カードを使用しない MPX および SDX プラットフォーム (ソフトウェアのみ)
-
ソフトウェアのみのプラットフォーム:VPX、CPX、BLX
EMS は次のプラットフォームでは有効にできません。
-
MPX 9700 FIPS および MPX 14000 FIPS プラットフォーム。
-
Cavium N2 暗号チップを含む MPX および SDX プラットフォーム
パラメータが有効な場合、ADC アプライアンスは TLS 1.2、TLS 1.1、および TLS 1.0 接続で EMS を使用しようとします。この設定は TLS 1.3 または SSLv3 接続には影響しません。
EMS がピアとネゴシエートされるようにするには、仮想サーバー (フロントエンド) またはサービス (バックエンド) にバインドされた SSL プロファイルで設定を有効にします。
CLI を使用して EMS を有効にする
コマンドプロンプトで入力します:
set ssl profile <profile name> [-allowExtendedMasterSecret (YES | NO)]
例
set ssl profile ns_default_ssl_profile_frontend -allowExtendedMasterSecret YES
set ssl profile ns_default_ssl_profile_backend -allowExtendedMasterSecret YES
<!--NeedCopy-->
次の表は、 allowExtendedMasterSecret
さまざまなデフォルトプロファイルとユーザー定義プロファイルのパラメーターのデフォルト値を示しています。
Profile | デフォルト設定 |
---|---|
既定のフロントエンドプロファイル | いいえ |
デフォルトのフロントエンドセキュアプロファイル | はい |
デフォルトのバックエンドプロファイル | いいえ |
ユーザー定義プロファイル | いいえ |
GUI を使用して EMS を有効にする
- [ システム] > [プロファイル] > [SSL プロファイル] に移動します。
- プロファイルを追加するか、プロファイルを編集します。
-
[ 拡張マスターシークレットを許可 ] を [はい]
クライアントの hello メッセージでの ALPN 拡張機能の処理のサポート
SSL_TCP仮想サーバーによって処理される接続の ALPN 拡張でアプリケーションプロトコルをネゴシエートするために、フロントエンド SSL プロファイルにパラメーターalpnProtocol
が追加されます。クライアント hello メッセージの ALPN 拡張で同じプロトコルが受信された場合、SSL プロファイルで指定されたプロトコルだけがネゴシエートされます。
注:alpnProtocol
パラメーターは、フロントエンド SSL プロファイルでのみサポートされ、SSL_TCP タイプの仮想サーバーによって処理される SSL 接続に適用されます。
CLI を使用してフロントエンド SSL プロファイルにプロトコルを設定する
コマンドプロンプトで入力します:
set ssl profile ns_default_ssl_profile_frontend -alpnProtocol <protocol_name>
alpnProtocol
パラメータには 3 つの値を指定できます。最大長:4096 バイト。
- NONE: アプリケーションプロトコルのネゴシエーションは行われません。この設定がデフォルトです。
- HTTP1: HTTP1 はアプリケーションプロトコルとしてネゴシエートできます。
- HTTP2: HTTP2 はアプリケーションプロトコルとしてネゴシエートできます。
例:
set ssl profile ns_default_ssl_profile_frontend -ALPNProtocol HTTP2
> sh ssl profile ns_default_ssl_profile_frontend
1) Name: ns_default_ssl_profile_frontend (Front-End)
SSLv3: DISABLED TLSv1.0: ENABLED TLSv1.1: ENABLED TLSv1.2: ENABLED TLSv1.3: DISABLED
Client Auth: DISABLED
Use only bound CA certificates: DISABLED
Strict CA checks: NO
Session Reuse: ENABLED Timeout: 120 seconds
DH: DISABLED
DH Private-Key Exponent Size Limit: DISABLED Ephemeral RSA: ENABLED Refresh Count: 0
Deny SSL Renegotiation ALL
Non FIPS Ciphers: DISABLED
Cipher Redirect: DISABLED
SSL Redirect: DISABLED
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
Push Encryption Trigger: Always
PUSH encryption trigger timeout: 1 ms
SNI: DISABLED
OCSP Stapling: DISABLED
Strict Host Header check for SNI enabled SSL sessions: NO
Match HTTP Host header with SNI: CERT
Push flag: 0x0 (Auto)
SSL quantum size: 8 kB
Encryption trigger timeout 100 mS
Encryption trigger packet count: 45
Subject/Issuer Name Insertion Format: Unicode
SSL Interception: DISABLED
SSL Interception OCSP Check: ENABLED
SSL Interception End to End Renegotiation: ENABLED
SSL Interception Maximum Reuse Sessions per Server: 10
Session Ticket: DISABLED
HSTS: DISABLED
HSTS IncludeSubDomains: NO
HSTS Max-Age: 0
HSTS Preload: NO
Allow Extended Master Secret: NO
Send ALPN Protocol: HTTP2
Done
<!--NeedCopy-->
GUI を使用してフロントエンド SSL プロファイルにプロトコルを設定する
-
[ システム] > [プロファイル] に移動し、[ SSL プロファイル] を選択します。
-
ns_default_ssl_profile_frontend を選択し、[ 編集] をクリックします。
-
[ ALPN プロトコル ] リストで [ HTTP2] を選択します。
古い設定をロードする
デフォルトプロファイルの有効化は元に戻せません。ただし、展開にデフォルトプロファイルが必要ないと判断した場合は、デフォルトプロファイルを有効にする前に保存した古い設定を読み込むことができます。この変更は、アプライアンスの再起動後に有効になります。
CLI を使用して古い設定をロードする
コマンドプロンプトで入力します:
shell
root@ns# clear config
root@ns# cd /nsconfig
root@ns# cp ns.conf.NS.11.0.jun.16 ns.conf
root@ns# reboot
<!--NeedCopy-->
レート制限 SSL 再ネゴシエーション
SSL 再ネゴシエーションが有効な場合、再ネゴシエーション要求の数に制限はありません。その結果、NetScalerはDoS攻撃を受けやすくなり、最終的にNetScalerがSSLトラフィックの処理を完全に停止する可能性があります。SSLプロファイルにこのパラメータmaxRenegrate
が導入されたのは、SSL エンティティで 1 秒間に受信される再ネゴシエーション要求の数を制限することでこの問題を軽減するためです。
このパラメータは、denySSLReneg
がALLに設定されていない場合にのみ設定できます。maxRenegRate
を0 に設定すると、レート制限は無効になります (デフォルト設定)。1 ~ 65535 の整数値に設定すると、レート制限が有効になり、SSL プロファイルにバインドされた各エンティティへの 1 秒あたりの再ネゴシエーション要求の最大数がこの整数値に制限されます。たとえば、SSLプロファイル ssl-profile-1
でmaxRenegRate
パラメータを100に設定し 、このプロファイルが2つの仮想サーバーv1とv2にバインドされている場合、v1の制限は100で、v2の再ネゴシエーション要求の制限は100です。
注:
この機能は DTLS プロトコルではサポートされていません。
CLI を使用して SSL プロファイルを作成する際に制限を追加するには
コマンドプロンプトで入力します:
add ssl profile pf1 -denySSLReneg (NO | FRONTEND_CLIENT | FRONTEND_CLIENTSERVER | NONSECURE) -maxRenegRate 100
CLI を使用して既存の SSL プロファイルに制限を設定するには
コマンドプロンプトで入力します:
set ssl profile pf1 denySSLReneg (NO | FRONTEND_CLIENT | FRONTEND_CLIENTSERVER | NONSECURE) -maxRenegRate 100
例以下のコマンドでは 、「MaxRenegrate」が 100 に設定されています。その結果、プロファイルがバインドされるすべてのエンティティに対して、1 秒あたり最大 100 のリクエストが許可されます。
set ssl profile pf1 denySSLReneg (NO | FRONTEND_CLIENT | FRONTEND_CLIENTSERVER | NONSECURE) -maxRenegRate 100
add ssl profile pf1 -denySSLReneg (NO | FRONTEND_CLIENT | FRONTEND_CLIENTSERVER | NONSECURE) -maxRenegRate 100
GUI を使用して制限を指定するには
- [ システム] > [プロファイル] > [SSL プロファイル] に移動します。
- [ 追加 ] をクリックしてプロファイルを作成するか、既存のプロファイルを選択します。
- 新しいプロファイルの場合は、名前を指定します。
- [ **SSL 再ネゴシエーションの拒否 ] を [すべて] 以外の任意の値に設定します。**
- 最大再ネゴシエーションレートを指定します。
- [OK] をクリックします。
- [完了] をクリックします。
この記事の概要
- 注意事項
- CLI を使用して設定を保存する
- 既定のプロファイルを有効にする
- デフォルトプロファイルの一部であるパラメータ
- 使用例
- SSL プロファイルパラメータ
- NetScalerアプライアンスのバックエンドでの安全な再ネゴシエーションのサポート
- ホストヘッダ検証
- CLI を使用して SSL プロファイルパラメータを設定する
- GUI を使用して SSL プロファイルパラメータを設定する
- TLS セッションチケット拡張
- セッションチケットの安全な実装
- NetScaler非FIPSプラットフォームでのSSLハンドシェイクの拡張マスターシークレットのサポート
- クライアントの hello メッセージでの ALPN 拡張機能の処理のサポート
- 古い設定をロードする
- レート制限 SSL 再ネゴシエーション