OCSPステープリング
CRLおよびOCSPのNetScaler ADC実装では、クライアント証明書の失効ステータスのみが報告されます。SSL ハンドシェイク中に受信したサーバー証明書の失効ステータスを確認するには、クライアントが認証局に要求を送信する必要があります。
トラフィックが多いウェブサイトでは、多くのクライアントが同じサーバー証明書を受け取ります。各クライアントがサーバー証明書の失効ステータスのクエリを送信すると、認証局は証明書の有効性をチェックする OCSP 要求で溢れかえってしまいます。
OCSP ホチキス止めソリューション
不要な輻輳を回避するために、NetScaler ADCアプライアンスはOCSPホチキス止めをサポートするようになりました。つまり、SSL ハンドシェイク時に、アプライアンスは OCSP レスポンダからの応答を検証した後、サーバ証明書のステータスをクライアントに送信できるようになりました。サーバ証明書のステータスは、SSLハンドシェイクの一環としてアプライアンスがクライアントに送信する証明書に「ホチキス止め」されます。OCSP ホチキス止め機能を使用するには、SSL 仮想サーバーで有効にし、アプライアンスに OCSP レスポンダーを追加する必要があります。
メモ
- リリース13.1-30.xから、次の条件が満たされると、すべての中間証明書にOCSP応答拡張が含まれるようになりました。
- TLS 1.3 protocol is used
- Client sends a status request
以前は、サーバー証明書のみが、クライアントからのステータス要求への応答にこの拡張を含んでいました。
他のプロトコル (TLS 1.2 を含む) では、サーバーはサーバー証明書のみの OCSP 応答を送信します。つまり、RFC 6961 は TLS 1.2 プロトコルではサポートされていません。
NetScaler ADCアプライアンスは、RFC 6066で定義されているOCSPホチキス止めをサポートします。
OCSPホチキス止めは、NetScaler ADCアプライアンスのフロントエンドでのみサポートされています。
TLS 1.3プロトコルが使用されている場合、ADCアプライアンスは次のように動作します。キャッシュされたOCSP応答が無効(空または期限切れ)の場合、要求はOCSPレスポンダに送信されますが、SSLハンドシェイクは応答を待たずに完了します。応答が受信されると、キャッシュされ、クライアントからの今後のステータス要求に使用できます。
- OCSPホチキス止めに対するCCitrix ADC サポートは、TLSプロトコルバージョン1.0以上を使用するハンドシェイクに制限されています。
サーバー証明書の OCSP 応答キャッシング
注
リリース13.1-30.x以降、TLS 1.3プロトコルが使用されている場合、OCSP応答はサーバー証明書とすべての中間証明書に対してキャッシュされます。
SSL ハンドシェイク中に、クライアントがサーバ証明書の失効ステータスを要求すると、アプライアンスはまずローカルキャッシュでこの証明書のエントリを確認します。有効なエントリが見つかると、そのエントリが評価され、サーバ証明書とそのステータスがクライアントに提示されます。失効ステータスエントリが見つからない場合、アプライアンスはサーバー証明書の失効ステータスの要求を OCSP レスポンダに送信します。応答を受信すると、証明書と失効ステータスをクライアントに送信します。次の更新フィールドが OCSP 応答に存在する場合、応答は設定された期間(タイムアウトフィールドに指定された値)だけキャッシュされます。
注:リリース 12.1 ビルド 49.x から、タイムアウトが切れる前でも、OCSP レスポンダからサーバ証明書のキャッシュされたレスポンスをクリアできます。以前は、設定されたタイムアウトが終了するまで、証明書とキーのペアのキャッシュされたステータスを破棄することはできませんでした。
CLI を使用してキャッシュされたステータスをクリアするには、コマンドプロンプトで次のように入力します。
clear ssl certKey <certkey name> -ocspstaplingCache
<!--NeedCopy-->
例:
clear ssl certKey s1 -ocspstaplingCache
<!--NeedCopy-->
GUI を使用してキャッシュされたステータスをクリアするには
- GUI で、[ トラフィック管理 ] > [ SSL ] > [ 証明書 ] > [ CA 証明書] に移動します。
- 詳細ペインで、証明書を選択します。
- [アクションを選択 ] リストで、[ クリア] を選択します。確認を求められたら、[ はい] をクリックします。
OCSP ホチキス止め構成
OCSP ホチキス止めの設定には、機能の有効化と OCSP の設定が含まれます。OCSP を構成するには、OCSP レスポンダーを追加し、OCSP レスポンダーを CA 証明書にバインドし、証明書を SSL 仮想サーバーにバインドする必要があります。
注:
HTTP ベースの URL のみを持つ OCSP レスポンダがサポートされています。
CLI を使用して OCSP ホチキス止めを有効にする
コマンドプロンプトで入力します。
set ssl vserver <name> -ocspstapling [ENABLED | DISABLED]
<!--NeedCopy-->
例:
set ssl vserver vip1 -ocspStapling ENABLED
Done
sh ssl vserver vip1
Advanced SSL configuration for VServer vip1:
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: ENABLED
OCSP Stapling: ENABLED
SSLv2: DISABLED SSLv3: DISABLED TLSv1.0: ENABLED TLSv1.1: ENABLED TLSv1.2: ENABLED
Push Encryption Trigger: Always
Send Close-Notify: YES
ECC Curve: P_256, P_384, P_224, P_521
1) CertKey Name: server_certificate1 Server Certificate
1) Cipher Name: DEFAULT
Description: Default cipher list with encryption strength >= 128bit
Done
<!--NeedCopy-->
注: デフォルト(拡張)プロファイルが有効になっている場合は、 set ssl profile <profile name> -ocspStapling [ENABLED | DISABLED]
コマンドを使用して OCSP を有効または無効にします。
GUI を使用して OCSP ホチキス止めを有効にする
- トラフィック管理 > SSL > 仮想サーバーに移動します。
- 仮想サーバーを開き、[ SSL パラメータ] で [ OCSP Stapling] を選択します。
OCSP 構成
OCSP レスポンダは、OCSP ホチキス止め要求を送信するために動的または手動で追加されます。サーバー証明書の OCSP URL に基づいてサーバー証明書とその発行者証明書を追加すると、内部レスポンダーが動的に追加されます。手動 OCSP レスポンダは CLI または GUI から追加されます。サーバー証明書のOCSP要求を送信するために、NetScaler ADCアプライアンスは、発行者証明書にバインドするときに割り当てられた優先順位に基づいてOCSPレスポンダーを選択します。応答側が OCSP ホチキス止め要求の送信に失敗した場合、次に高い優先度を持つ応答側が要求の送信対象として選択されます。たとえば、手動で構成されたレスポンダーが 1 つだけ失敗し、動的にバインドされたレスポンダーが存在する場合、そのレスポンダーが OCSP 要求の送信用に選択されます。
OCSP URL が HTTP 以外の場合、内部 OCSP レスポンダは作成されません。
注
手動で追加された OCSP レスポンダーは、動的に追加されたレスポンダーよりも優先されます。
手動で作成された OCSP レスポンダーと内部で作成された OCSP レスポンダーの違い
手動で作成された OCSP レスポンダー | 内部 (動的) に作成された OCSP レスポンダ |
手動で作成され、優先度付きで発行者証明書に明示的にバインドされます。 | サーバー証明書とその発行者証明書 (CA 証明書) を追加しながら、デフォルトで作成およびバインドされます。名前は「ns_internal_」で始まります。 |
1 ~ 127 の優先度は、設定された応答側用に予約されています。 | 優先順位は128から自動的に割り当てられます。 |
URL とバッチ深度は変更できます。 | URL とバッチ深度は変更できません。 |
直接削除されました。 | サーバー証明書または CA 証明書を削除した場合にのみ削除されます。 |
任意の CA 証明書にバインドできます。 | デフォルトでは、1 つの CA 証明書にバインドされています。他の CA 証明書にはバインドできません。 |
構成 (ns.conf) に保存されます。 | 追加コマンドは設定に保存されません。set コマンドだけが保存されます。 |
3 つの OCSP レスポンダを、それぞれ 1、2、および 3 の同じ発行者証明書にバインドし、後で優先度 2 のバインドを解除しても、他の優先度は影響を受けません。 | 3 つの OCSP レスポンダが、それぞれ 128、129、および 130 の優先度を持つ発行者証明書に自動的にバインドされます。優先度 129 でバインドされたレスポンダーの作成に使用されたサーバー証明書を削除すると、そのレスポンダーは削除されます。また、次の応答者の優先度(優先度130)は自動的に129に変更されます。 |
リクエスト処理の例:
- 仮想サーバー (VIP1) を追加します。
- 発行者証明書 (CA1) を追加し、VIP1 にバインドします。
- 3 つの証明書 S1、S2、および S3 を追加します。内部レスポンダー resp1、resp2、および resp3 はそれぞれデフォルトで作成されます。
- S3 を VIP1 にバインドします。
- VIP1にリクエストが来る。レスポンダー resp3 が選択されています。
内部 OCSP レスポンダを動的に作成するには、アプライアンスに次のものが必要です。
- サーバー証明書の発行者の証明書 (通常は CA 証明書)。
- サーバー証明書の証明書とキーのペア。この証明書には、認証局から提供された OCSP URL が含まれている必要があります。この URL は、動的に追加された内部レスポンダーの名前として使用されます。
内部 OCSP レスポンダには、手動で設定されたレスポンダと同じデフォルト値があります。
注:
内部レスポンダーでは、キャッシュはデフォルトで無効になっています。
set ssl ocspResponder
コマンドを使用してキャッシュを有効にします。
CLI を使用して OCSP を構成する
コマンドプロンプトで、次のコマンドを入力して OCSP を構成し、構成を確認します。
add ssl certKey <certkeyName> (-cert <string> [-password]) [-key <string> | -fipsKey <string> | -hsmKey <string>] [-inform <inform>] [-expiryMonitor ( ENABLED | DISABLED ) [-notificationPeriod <positive_integer>]] [-bundle ( YES | NO )]
add ssl ocspResponder <name> -url <URL> [-cache ( ENABLED | DISABLED )[-cacheTimeout <positive_integer>]] [-resptimeout <positive_integer>] [-responderCert <string> | -trustResponder] [-producedAtTimeSkew <positive_integer>][-signingCert <string>][-useNonce ( YES | NO )][ -insertClientCert ( YES | NO )]
bind ssl certKey [<certkeyName>] [-ocspResponder <string>] [-priority <positive_integer>]
show ssl ocspResponder [<name>]
<!--NeedCopy-->
パラメーター:
HttpMethod:
OCSP 要求の送信に使用される HTTP メソッド。255 バイト未満のリクエストでは、OCSP サーバーへのクエリに HTTP GET メソッドを設定できます。GET メソッドを指定したが、長さが 255 バイトを超える場合、アプライアンスはデフォルトのメソッド(POST)を使用します。
可能な値:GET、POST
デフォルト値:POST
OCSPurlResolveTimeout:
OCSP URL の解決を待機する時間 (ミリ秒)。この時間が経過すると、次に高い優先度を持つ応答者が選択されます。すべてのレスポンダーが失敗した場合、仮想サーバーの設定に応じて、エラーメッセージが表示されるか、接続が切断されます。
最小値:100
最大値:2000
例:
add ssl certkey root_ca1 –cert root_cacert.pem
add ssl ocspResponder ocsp_responder1 -url "http:// www.myCA.org:80/ocsp/" -cache ENABLED -cacheTimeout 30 -resptimeout 100 -responderCert responder_cert -producedAtTimeSkew 300 -signingCert sign_cert -insertClientCert YES
bind ssl certKey root_ca1 -ocspResponder ocsp_responder1 -priority 1
sh ocspResponder ocsp_responder1
1)Name: ocsp_responder1
URL: http://www.myCA.org:80/ocsp/, IP: 192.128.22.22
Caching: Enabled Timeout: 30 minutes
Batching: 8 Timeout: 100 mS
HTTP Request Timeout: 100mS
Request Signing Certificate: sign_cert
Response Verification: Full, Certificate: responder_cert
ProducedAt Time Skew: 300 s
Nonce Extension: Enabled
Client Cert Insertion: Enabled
Done
show certkey root_ca1
Name: root_ca1 Status: Valid, Days to expiration:8907
Version: 3
…
1) OCSP Responder name: ocsp_responder1 Priority: 1
Done
<!--NeedCopy-->
CLI を使用して OCSP を変更する
OCSP レスポンダの名前は変更できませんが、 set ssl ocspResponder
コマンドを使用して他のパラメータを変更することはできます。
コマンドプロンプトで次のコマンドを入力して、パラメーターを設定し、構成を確認します。
set ssl ocspResponder <name> [-url <URL>] [-cache ( ENABLED | DISABLED)] [-cacheTimeout <positive_integer>] [-resptimeout <positive_integer>] [ -responderCert <string> | -trustResponder][-producedAtTimeSkew <positive_integer>][-signingCert <string>] [-useNonce ( YES | NO )]
unbind ssl certKey [<certkeyName>] [-ocspResponder <string>]
bind ssl certKey [<certkeyName>] [-ocspResponder <string>] [-priority <positive_integer>]
show ssl ocspResponder [<name>]
<!--NeedCopy-->
GUI を使用して OCSP を構成する
- [ トラフィック管理 ] > [ SSL ] > [ OCSP レスポンダー] に移動し、OCSP レスポンダーを構成します。
- [ トラフィック管理 ] > [ SSL ] > [ 証明書] に移動し、証明書を選択し、[ アクション ] リストで [ OCSP バインディング] を選択します。OCSP レスポンダーをバインドします。
- [ トラフィック管理 ] > [ 負荷分散 ] > [ 仮想サーバー] に移動し、仮想サーバーを開き、[証明書] セクションをクリックして CA 証明書をバインドします。
- 必要に応じて、[ OCSP 必須] を選択します。
注:
add ssl ocspResponder
コマンドおよびset ssl ocspResponder
コマンドの insert クライアント証明書パラメータは無効になりました。つまり、パラメータは設定時に無視されます。