Citrix ADC

OCSP ホチキス

CRLおよびOCSPのCitrix ADC実装では、クライアント証明書の失効ステータスのみが報告されます。SSL ハンドシェイク中に受信したサーバー証明書の失効ステータスを確認するには、クライアントが認証局に要求を送信する必要があります。

トラフィックが多いウェブサイトでは、多くのクライアントが同じサーバー証明書を受け取ります。各クライアントがサーバー証明書の失効ステータスのクエリを送信すると、認証局は証明書の有効性をチェックする OCSP 要求で溢れかえってしまいます。

OCSP ホチキス止めソリューション

不要な輻輳を回避するために、Citrix 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 プロトコルではサポートされていません。

  • Citrix ADCアプライアンスは、RFC 6066で定義されているOCSPホチキス止めをサポートします。

  • OCSPホチキス止めは、Citrix 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 を使用してキャッシュされたステータスをクリアするには

  1. GUI で、[ トラフィック管理 ] > [ SSL ] > [ 証明書 ] > [ CA 証明書] に移動します。
  2. 詳細ペインで、証明書を選択します。
  3. [アクションを選択 ] リストで、[ クリア] を選択します。確認を求められたら、[ はい] をクリックします。

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 ホチキス止めを有効にする

  1. トラフィック管理 > SSL > 仮想サーバーに移動します
  2. 仮想サーバーを開き、[ SSL パラメータ] で [ OCSP Stapling] を選択します。

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) に保存されます。 追加コマンドは設定に保存されません。set コマンドだけが保存されます。
3 つの OCSP レスポンダを、それぞれ 1、2、および 3 の同じ発行者証明書にバインドし、後で優先度 2 のバインドを解除しても、他の優先度は影響を受けません。 3 つの OCSP レスポンダが、それぞれ 128、129、および 130 の優先度を持つ発行者証明書に自動的にバインドされます。優先度 129 でバインドされたレスポンダーの作成に使用されたサーバー証明書を削除すると、そのレスポンダーは削除されます。また、次の応答者の優先度(優先度130)は自動的に129に変更されます。

リクエスト処理の例:

  1. 仮想サーバー (VIP1) を追加します。
  2. 発行者証明書 (CA1) を追加し、VIP1 にバインドします。
  3. 3 つの証明書 S1、S2、および S3 を追加します。内部レスポンダー resp1、resp2、および resp3 はそれぞれデフォルトで作成されます。
  4. S3 を VIP1 にバインドします。
  5. 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 を構成する

  1. [ トラフィック管理 ] > [ SSL ] > [ OCSP レスポンダー] に移動し、OCSP レスポンダーを構成します。
  2. [ トラフィック管理 ] > [ SSL ] > [ 証明書] に移動し、証明書を選択し、[ アクション ] リストで [ OCSP バインディング] を選択します。OCSP レスポンダーをバインドします
  3. [ トラフィック管理 ] > [ 負荷分散 ] > [ 仮想サーバー] に移動し、仮想サーバーを開き、[証明書] セクションをクリックして CA 証明書をバインドします。
  4. 必要に応じて、[ OCSP 必須] を選択します。

注:

add ssl ocspResponderコマンドおよびset ssl ocspResponderコマンドの insert クライアント証明書パラメータは無効になりました。つまり、パラメータは設定時に無視されます。