OCSP ホチキス止め
CRLとOCSPのCitrix ADC実装では、クライアント証明書の失効状態のみが報告されます。SSL ハンドシェイク中に受信したサーバー証明書の失効ステータスを確認するには、クライアントが認証局に要求を送信する必要があります。
トラフィックの多いウェブサイトでは、多くのクライアントが同じサーバー証明書を受け取ります。各クライアントがサーバー証明書の失効状態に関するクエリを送信した場合、証明書の有効性を確認するための OCSP 要求が証明機関に浸水されます。
OCSP ホチキス止めソリューション
不要な輻輳を避けるために、Citrix ADCアプライアンスはOCSPホチキス止めをサポートするようになりました。つまり、アプライアンスは、OCSP レスポンダから証明書ステータスを検証した後、SSL ハンドシェイク時に、サーバ証明書の失効ステータスをクライアントに送信できるようになりました。サーバ証明書の失効ステータスは、SSL ハンドシェイクの一部としてアプライアンスがクライアントに送信する応答に対して「ホチキス止め」されます。OCSP ホチキス止め機能を使用するには、SSL 仮想サーバーでこの機能を有効にし、アプライアンスに OCSP レスポンダを追加する必要があります。
注:
-
Citrix ADCアプライアンスは、RFC 6066で定義されているOCSPホチキス止めをサポートします。
-
OCSPホチキス止めは、Citrix ADCアプライアンスのフロントエンドでのみサポートされます。
重要:
Citrix ADCによるOCSPホチキス止めのサポートは、TLSプロトコルバージョン1.0以降を使用したハンドシェイクに限定されます。
サーバ証明書の OCSP 応答キャッシュ
SSLハンドシェイク中に、クライアントがサーバー証明書の失効ステータスを要求すると、アプライアンスはまずローカルキャッシュにこの証明書のエントリをチェックします。有効なエントリが見つかった場合、そのエントリが評価され、サーバ証明書とそのステータスがクライアントに表示されます。失効ステータス・エントリが見つからない場合、アプライアンスはサーバー証明書の失効ステータスの要求を OCSP レスポンダに送信します。応答を受信すると、証明書と失効ステータスをクライアントに送信します。次のアップデートフィールドが OCSP 応答に存在する場合、応答は設定された時間(timeout フィールドに指定された値)だけキャッシュされます。
注:リリース 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 ホチキス止め] を選択します。
OCSP構成
OCSP 応答側は、OCSP ホチキス止め要求を送信するために、動的にまたは手動で追加されます。内部応答側は、サーバー証明書の OCSP URL に基づいてサーバー証明書とその発行者証明書を追加すると、動的に追加されます。手動の OCSP 応答側が CLI または GUI から追加されます。サーバー証明書のOCSP要求を送信するために、Citrix 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)に保存されます。 | Add コマンドは構成に保存されません。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 Mandatoryを選択します。
注:
add ssl ocspResponder
コマンドとset ssl ocspResponder
コマンドでクライアント証明書の挿入パラメーターが無効になりました。つまり、パラメータは設定時に無視されます。