オンライン証明書状態プロトコル (OCSP) Stapling は、OCSP プロトコルの拡張機能です。SSL/TLS 証明書の有効性は、OCSP Stapling を使用して確認できます。このセクションでは、OCSP Stapling について詳しく説明します。

SSL 証明書は、スケジュール設定された有効期限が切れる前に認証局 (CA) が失効させることができます。これは、証明書が信頼できなくなったことを意味します。証明書の有効期限が切れる前に発行された SSL 証明書を無効にするこのプロセスは、証明書失効と呼ばれます。

ブラウザとクライアントにとって、証明書が失効しているかどうかを検出し、セキュリティ警告を提示することが重要です。証明書失効は、証明書失効リスト (CRL) またはオンライン証明書状態プロトコル (OCSP) を使用してチェックします。

CRL は、CA が失効させた証明書の大規模なリストです。クライアントが仮想サービスへの SSL 接続要求を送信すると、NSX Advanced Load Balancer は仮想サービスの PKI プロファイルで CA と CRL をチェックして、クライアント証明書がまだ有効かどうかを確認します。

失効したシリアル番号の長いリストをダウンロードして更新することが煩雑な可能性があります。OCSP 方法では、クライアントはリスト全体をダウンロードして解析するのではなく、単一の証明書の状態をクエリします。これにより、クライアントとネットワークのオーバーヘッドが軽減されます。OCSP 要求は証明書ごとに送信されるため、トラフィックが多い場合には OCSP レスポンダのオーバーヘッドとなる可能性があります。

OCSP Stapling

RFC 2560 では、失効した証明書をチェックするための新しい方法である OCSP Stapling について説明しています。この方法では、証明書を検証する必要がある場合、ブラウザは証明書のシリアル番号を含む OCSP 要求を OCSP レスポンダに発行します。OCSP レスポンダはシリアル番号を使用して CA データベースを検索し、シリアル番号に対応する証明書の失効状態を取得します。署名付き OCSP 応答を通じて証明書の失効状態を返します。

クライアントは、証明書の状態を取得するたびに CA サーバと通信する必要はありません。NSX Advanced Load Balancer は、要求を受信すると、情報を取得してクライアントに提供します。

NSX Advanced Load Balancer では、OCSP Stapling はアプリケーション証明書とルート/中間証明書でのみ有効にできます。応答の場合、アプリケーション証明書のみの OCSP 応答が TLS/SSL ハンドシェイクで証明書にステップル固定されます。OCSP Stapling は、NSX Advanced Load Balancer ユーザー インターフェイスと CLI を使用して有効化および構成できます。

OCSP Stapling のパラメータ

このセクションでは、NSX Advanced Load Balancer で OCSP Stapling 機能を使用するように構成できるパラメータについて説明します。

時間パラメータ

ユーザー インターフェイスフィールド

CLI ラベル

説明

[頻度の間隔]

ocsp_req_interval

OCSP 要求間の時間間隔を定義します。

[応答のタイムアウト]

ocsp_resp_timeout

コントローラが CA からの応答を待機する時間間隔を定義します。レスポンダからの応答がない場合は、フェイルオーバー メカニズムが開始されます。

[失敗ジョブの間隔]

ocsp_job_fail_interval

応答 (ocsp_req_interval) タイムアウト内に応答が受信されない場合に、より短い間隔で OCSP ジョブをスケジュール設定するには、このオプションを使用します。

[最大試行回数]

max_tries

失敗した OCSP ジョブをスケジュール設定できる最大回数。

レスポンダ URL アクション

OCSP サーバからの応答がない場合、フェイルオーバー メカニズムが開始されます。次のいずれかの URL アクションを URL アクションとして選択できます。

ユーザー インターフェイスフィールド

説明

[フェイルオーバー]

CA が構成した URL ではなく、ユーザーが構成した URL (responder_url_lists) を厳密に使用するには、この方法を選択します。

[オーバーライド]

CA が構成した URL ではなく、ユーザーが構成した URL (responder_url_lists) を厳密に使用するには、この方法を選択します。最初に証明書の AIA 拡張機能で見つかった URL(ocsp_responder_url_list_from_certs)にアクセスするには、この方法を選択します。応答を取得できない場合、応答者 URL リスト (responder_url_lists) にフォールバックします。

注:

何らかの理由で OCSP 要求を処理できない場合は、OCSPErrorStatus は OCSP ワークフローに障害を含めるために状態エラーを追跡します。

ユーザー インターフェイスを通じて OCSP Stapling の使用

NSX Advanced Load Balancer ユーザー インターフェイスを通じてルート/中間 CA 証明書およびアプリケーション証明書に対して OCSP Stapling を有効にできます。

注:
  • OCSP Stapling は、ルート/中間証明書とアプリケーション証明書でのみ有効にできます。コントローラ証明書では有効にできません。

  • アプリケーション証明書の場合、OCSP Stapling は現在、CSR およびインポート モードでサポートされています。自己署名の証明書に対して OCSP Stapling を有効にすることはできません。

OCSP Stapling を有効にするには、次の手順を実行します。

  • NSX Advanced Load Balancer ユーザー インターフェイスから、[テンプレート] > [セキュリティ] > [SSL/TLS 証明書] の順に移動します。

  • [作成] > [ルート/中間 CA 証明書] の順にクリックします。

  • 証明書の [名前] を入力します。

  • [ファイルのインポート] を行うか、[証明書ファイルのアップロードまたは貼り付け] フィールドに詳細を貼り付けます。

  • [OCSP Stapling を有効にする] チェックボックスを選択して、このオプションを有効にします。

  • [頻度の間隔] として 60 ~ 31536000 の値を入力します。

  • [応答のタイムアウト] として秒単位の値を入力します。

  • [失敗ジョブの間隔] として 60 ~ 86400 秒の値を入力します。

  • [最大試行回数] を入力して、失敗したジョブがスケジュール設定する回数を定義します([失敗ジョブの間隔] を使用)。最大試行回数に達すると、通常の OCSP ジョブ([頻度の間隔])でジョブをスケジュール設定します。

  • [OCSP レスポンダ URL リスト] で、レスポンダ URL を入力して、OCSP レスポンダの SSL/TLS 証明書に含まれている AIA 拡張機能のフェイルオーバー/オーバーライドを実行します。

  • [レスポンダ URL アクション][フェイルオーバー] または [オーバーライド] を選択して、OCSP レスポンダの SSL/TLS 証明書に含まれている AIA 拡張機能をフェイルオーバーまたはオーバーライドします。

  • [OCSP レスポンダ URL リスト] にある [追加] をクリックします。

  • [レスポンダ URL アクション] を選択します。OCSP Stapling を含む [証明書の追加] 画面を構成します。



  • [検証] をクリックします。

失効した証明書の処理

  • SSL 証明書の状態が [失効] または [発行者失効] に変わるたびに、イベントまたはアラートが発生します。

  • 証明書が失効すると、NSX Advanced Load Balancer ユーザー インターフェイスで証明書の状態が [失効] とマークされます。

  • ルート/中間証明書が失効すると、失効したルート/中間証明書によって発行されたすべての証明書が [発行者失効] とマークされます。コントローラは、これらの証明書の OCSP 証明書状態に対する要求を停止します。

  • 状態が [失効] または [発行者失効] であるすべての証明書の SSL スコアは 0 とマークされます。



  • 仮想サービス障害が追加され、証明書が [失効] または [発行者失効] のいずれかの場合にユーザーに警告します。



SSL ハンドシェイク中の OCSP Stapling

OCSP 応答がクライアントに送信されたときに SSL ハンドシェイクでの Stapling 情報の交換は次のようになります。



CLI を使用した OCSP Stapling の有効化

OCSP Stapling は、次の例に示すように、証明書オブジェクト内の enable_ocsp_stapling フラグを使用して CLI を通じて構成できます。

[admin:user-ctrl]: > configure sslkeyandcertificate test-cert
[admin:user-ctrl]: sslkeyandcertificate> enable_ocsp_stapling
Overwriting the previously entered value for enable_ocsp_stapling
[admin:user-ctrl]: sslkeyandcertificate> ocsp_config
[admin:user-ctrl]: sslkeyandcertificate:ocsp_config> ocsp_req_interval 21600
Overwriting the previously entered value for ocsp_req_interval
[admin:user-ctrl]: sslkeyandcertificate:ocsp_config> ocsp_resp_timeout 60
[admin:user-ctrl]: sslkeyandcertificate:ocsp_config> url_action ocsp_responder_url_
ocsp_responder_url_failover Used as a Failover URL to the AIA extension contained in the certificate.
ocsp_responder_url_override URL configured is used instead of the URL contained in the AIA extension of the certificate.
[admin:user-ctrl]: sslkeyandcertificate:ocsp_config> url_action ocsp_responder_url_failover
[admin:user-ctrl]: sslkeyandcertificate:ocsp_config> responder_url_lists
[admin:user-ctrl]: sslkeyandcertificate:ocsp_config> responder_url_lists  http://ocsp2.example.com:8080/
[admin:user-ctrl]: sslkeyandcertificate:ocsp_config> failed_ocsp_jobs_retry_interval 30
Overwriting the previously entered value for failed_ocsp_jobs_retry_interval
[admin:user-ctrl]: sslkeyandcertificate:ocsp_config> save
[admin:user-ctrl]: sslkeyandcertificate> save

構成の詳細は次のとおりです。

+-------------------------------------------+--------------------------------------------------------------------------------------------------+
| Field                                     | Value                                                                                            |
+-------------------------------------------+--------------------------------------------------------------------------------------------------+
| uuid                                      | sslkeyandcertificate-380d9e69-4f04-4519-8151-c89ff2d7bb6f                                        |
| name                                      | test-cert                                                                                        |
| type                                      | SSL_CERTIFICATE_TYPE_VIRTUALSERVICE                                                              |
| certificate                               |                                                                                                  |
| version                                   | 2                                                                                                |
| serial_number                             | 15597070261980010830                                                                             |
| self_signed                               | True                                                                                             |
| issuer                                    |                                                                                                  |
| common_name                               | test.example.com                                                                                 |
| email_address                             | [email protected]                                                                                    |
| organization_unit                         | L7                                                                                               |
| organization                              | abc                                                                                              |
| locality                                  | Bangalore                                                                                        |
| state                                     | Karnataka                                                                                        |
| country                                   | IN                                                                                               |
| distinguished_name                        | C=IN, ST=Karnataka, L=Bangalore, O=VMware, OU=L7, CN=test.example.com, [email protected] |
|                                           |                                                                                                  |    
| enable_ocsp_stapling                      | True                                                                                             |
| ocsp_config                               |                                                                                                  |
|     ocsp_req_interval                     | 21600 sec                                                                                        |
|     ocsp_resp_timeout                     | 60 sec                                                                                           |
|     responder_url_lists[1].               | http://ocsp.example.com/                                                                         |
|     url_action                            | OCSP_RESPONDER_URL_FAILOVER                                                                      |
|     failed_ocsp_jobs_retry_interval       | 30 sec                                                                                           |
| tenant_ref                                | admin                                                                                            |
+-------------------------------------------+--------------------------------------------------------------------------------------------------+
注:

OCSP 応答を正常に受信すると、next_update 値と ocsp_req_interval 値を比較して、2 つの値のうち小さい方を次の OCSP 要求のスケジュール設定に使用します。

証明書状態の確認

証明書に対して OCSP Stapling が有効になっている場合、コントローラは認証局情報アクセス (AIA) 拡張機能にある OCSP URL を証明書内で検索し、識別された URL に要求を送信します。GET メソッドと POST HTTP メソッドの両方がサポートされています。OCSP 要求は最初に POST メソッドを使用して送信します。応答がない場合またはエラーが発生した場合は、GET メソッドを使用します。

OCSP 要求を受信すると、CA サーバまたはレスポンダは証明書状態を使用して応答します。OCSP 応答は CA によって直接署名されているため、偽装できません。NSX Advanced Load Balancer Controller は、OCSP 応答の署名を検証します。応答の検証に失敗すると、応答はドロップされ、フェイルオーバー メカニズムがトリガされてさらなる要求が送信されます。

CA は、次のいずれかの証明書状態を使用して応答します。

良好:

状態照会に対してポジティブな応答を受信しました。したがって、要求された証明書シリアル番号を含む証明書は、有効期間内に失効しません。

失効:

証明書は一時的または永久的に失効しました。

不明:

レスポンダは、要求されている証明書を認識しません。これは、要求がこのレスポンダによって提供されない未認識の発行者を示していることが原因で発生する可能性があります。

[テンプレート] > [セキュリティ] > [SSL/TLS 証明書] の順に移動して、SSL/TLS 証明書の状態を表示します。

アプリケーション ログ

アプリケーション ログは次の重要度を使用して生成されます。

  • 証明書状態が「失効」です

  • 証明書状態が「発行者失効」です

  • 証明書状態が「利用不可」です

  • OCSP 応答が「停止」状態です

上記のシナリオの重要なログを制御するには、次の例に示すように分析プロファイルを構成します。

[admin:controller-vmdc2]: > configure analyticsprofile
System-Analytics-Profile
[admin:controller-vmdc2]: > configure analyticsprofile System-Analytics-Profile
Updating an existing object. Currently, the object is:
+-------------------------------------------------+-------------------------------------------------------+
| Field                                           | Value                                                 |
+-------------------------------------------------+-------------------------------------------------------+
| uuid                                            | analyticsprofile-1775513e-bbf5-47ce-a067-42237c91315d |
| name                                            | System-Analytics-Profile                              |
| tenant_ref                                      | admin                                                 |
| exclude_revoked_ocsp_responses_as_error         | True                                                  |
| exclude_stale_ocsp_responses_as_error           | True                                                  |
| exclude_issuer_revoked_ocsp_responses_as_error  | True                                                  |
| exclude_unavailable_ocsp_responses_as_error     | True                                                  |
| hs_security_ocsp_revoked_score                  | 0.0                                                   |
| enable_adaptive_config                          | True                                                  |
+-------------------------------------------------+-------------------------------------------------------+

+-------------------------------------------------+-------------------------------------------------------+
[admin:controller-vmdc2]: analyticsprofile> no exclude_revoked_ocsp_responses_as_error                    | 
+-------------------------------------------------+-------------------------------------------------------+
| Field                                           | Value                                                 |
+-------------------------------------------------+-------------------------------------------------------+
| uuid                                            | analyticsprofile-1775513e-bbf5-47ce-a067-42237c91315d |
| name                                            | System-Analytics-Profile                              |
| tenant_ref                                      | admin                                                 |
| exclude_revoked_ocsp_responses_as_error         | False                                                 |
| exclude_stale_ocsp_responses_as_error           | True                                                  |
| exclude_issuer_revoked_ocsp_responses_as_error  | True                                                  |
| exclude_unavailable_ocsp_responses_as_error     | True                                                  |
| hs_security_ocsp_revoked_score                  | 0.0                                                   |
| enable_adaptive_config                          | True                                                  |
+-------------------------------------------------+-------------------------------------------------------+

+-------------------------------------------------+-------------------------------------------------------+
[admin:controller-vmdc2]: analyticsprofile>  hs_security_ocsp_revoked_score 3.0                           | 
+-------------------------------------------------+-------------------------------------------------------+
| Field                                           | Value                                                 |
+-------------------------------------------------+-------------------------------------------------------+
| uuid                                            | analyticsprofile-1775513e-bbf5-47ce-a067-42237c91315d |
| name                                            | System-Analytics-Profile                              |
| tenant_ref                                      | admin                                                 |
| exclude_revoked_ocsp_responses_as_error         | False                                                 |
| exclude_stale_ocsp_responses_as_error           | True                                                  |
| exclude_issuer_revoked_ocsp_responses_as_error  | True                                                  |
| exclude_unavailable_ocsp_responses_as_error     | True                                                  |
| hs_security_ocsp_revoked_score                  | 3.0                                                   |
| enable_adaptive_config                          | True                                                  |
+-------------------------------------------------+-------------------------------------------------------+

次のフィールドが構成可能です。

  • exclude_revoked_ocsp_responses_as_error

  • exclude_stale_ocsp_responses_as_error

  • exclude_issuer_revoked_ocsp_responses_as_error

  • exclude_unavailable_ocsp_responses_as_error

これらのフィールドはデフォルトで有効になっています。True に設定すると、対応するログが重要なログから除外されます。ログを重要なログに含めるには、フィールドを False に設定します。

また、hs_security_ocsp_revoked_score を構成することもできます。デフォルトでは、証明書または発行者証明書が失効すると、スコアは 0.0 に設定されます。

リスクとリスク軽減

OCSP Stapling は、ブラウザからサーバに OCSP 要求をオフロードするため、効果的です。これはオプションです。ブラウザは応答が予期されているかどうかを認識しないため、ソフトフェイル動作を使用します。これにより、セキュリティが侵害される可能性があります。この可能性を回避するために、OCSP Must-Staple という証明書拡張機能が使用されます。サーバはこのラベルを使用して、証明書に有効な OCSP 応答を提供する必要があることをブラウザに伝えます。OCSP 応答がない場合、証明書は受け入れられません。

セキュリティが侵害された場合、攻撃者がキーを持っていたとしても、証明書を使用する際には OCSP Staple を提供する必要があります。そうしないと、ブラウザは証明書を却下します。OCSP Staple が含まれている場合、応答によって証明書は失効と識別され、ブラウザは証明書を却下します。これにより、OCSP Stapling のセキュリティ問題が軽減されます。

注意事項

RFC6961 で説明されている OCSP Stapling v2 は、クライアントがチェーン内のすべての証明書の状態を要求できるようにする新しい拡張機能 status_request_v2 を定義します。現在、NSX Advanced Load Balancer では、複数の証明書状態要求はサポートされていません。クライアントが status_request_v2 拡張機能を使用してクライアント hello を送信すると、NSX Advanced Load Balancer は仮想サービスに直接接続されているアプリケーション証明書のみの証明書状態を返します。