6.6. OCSP (Online Certificate Status Protocol) レスポンダーの使用
6.6.1. OCSP レスポンダーの設定
Red Hat Certificate System では、CA 外部の OCSP インスタンスで使用される CRL を 2 つの方法で公開できます。
- CA から OCSP CRL への直接公開
- CA から LDAP、LDAP から OCSP への間接公開
デフォルトでは、OCSP インスタンスが設定されると最初の CRL 公開方法も自動的に設定され、CA から OCSP CRL への直接公開が可能になります。
2 番目の公開方法は、Common Criteria で評価される方法です。設定例については、計画、インストール、デプロイメントのガイド (Common Criteria Edition) の 7.4.7「CRL 公開の設定」を参照してください。
Online Certificate Status Manager の設定時にセキュリティードメイン内の CA を選択した場合、OCSP サービスを設定するために追加の手順は必要ありません。CA の CRL 公開は自動的に設定され、その署名証明書は Online Certificate Status Manager の証明書データベースで自動的に追加され、信頼されます。ただし、非セキュリティードメイン CA を選択した場合は、Online Certificate Status Manager を設定した後、OCSP サービスを手動で設定する必要があります。
OCSP Manager が属するセキュリティードメイン内のすべての CA は、設定時に OCSP Manager によって自動的に信頼されるわけではありません。CA パネルで設定された CA の証明書チェーン内のすべての CA は、OCSP マネージャーによって自動的に信頼されます。セキュリティードメイン内にあるが証明書チェーンにはない他の CA は、手動で信頼させる必要があります。
セキュリティードメイン外の Certificate Manager に Online Certificate Status Manager を設定するには、次を行います。
- OCSP レスポンダーに公開されるすべての CA に CRL を設定します。
- OCSP サービスが処理するすべての CA で、公開を有効にし、パブリッシャーを設定し、公開ルールを設定します (7章証明書および CRL の公開)。Certificate Manager が LDAP ディレクトリーに公開され、Online Certificated Status Manager がそのディレクトリーから読み込むように設定している場合は、これは必要ありません。
- 証明書プロファイルは、Certificate Manager が OCSP サービス要求をリッスンする場所を指す Authority Information Access 拡張機能を含むように設定する必要があります (「Certificate Manager の内部 OCSP サービスの有効化」)。
OCSP Responder を設定します。
- 失効情報ストア (「失効情報ストアの設定: 内部データベース」 および 「失効情報ストアの設定: LDAP ディレクトリー」) を設定します。
- OCSP レスポンダー (「OCSP レスポンダーへの CA の特定」) に対するすべての公開 Certificate Manager を特定します。
- 必要に応じて、OCSP 署名証明書 (「CA 証明書の信頼設定の変更」) に署名した CA に信頼設定を行います。
- 設定後に両方のサブシステムを再起動します。
- CA が OCSP レスポンダーに適切に接続されていることを確認します (「Certificate Manager と Online Certificate Status Manager の接続確認」)。
6.6.2. OCSP レスポンダーへの CA の特定
CRL を Online Certificate Status Manager に公開するように CA を設定する前に、Online Certificate Status Manager の内部データベースに CA 署名証明書を保存することにより、CA を Online Certificate Status Manager に識別する必要があります。Certificate Manager は、この証明書に関連するキーペアの CRL を署名します。Online Certificate Status Manager は、保存した証明書に対して署名を検証します。
Online Certificate Status Manager の設定時にセキュリティードメイン内の CA が選択されている場合は、CA を認識するように Online Certificate Status Manager を設定するための手順を追加で行う必要はありません。CA 署名の証明書は自動的に追加され、Online Certificate Status Manager の証明書データベースで信頼されます。ただし、非セキュリティードメイン CA が選択されている場合は、Online Certificate Status Manager を設定した後、CA 署名証明書を証明書データベースに手動で追加する必要があります。
CRL を Online Certificate Status Manager に公開する CA の証明書チェーンをインポートする必要はありません。OCSP サービスに証明書チェーンが必要なのは、CA が CRL を公開するときに SSL/TLS 認証を介して Online Certificate Status Manager に接続する場合のみです。それ以外の場合は、Online Certificate Status Manager に完全な証明書チェーンは必要ありません。
ただし、Online Certificate Status Manager の証明書データベースには、CRL に署名した証明書 (CA 署名証明書または個別の CRL 署名証明書) が必要です。OCSP サービスは、CRL に署名した証明書を、証明書チェーンではなく、データベース内の証明書と比較することにより、CRL を検証します。ルート CA とその下位 CA の 1 つが CRL を Online Certificate Status Manager に公開する場合、Online Certificate Status Manager には両方の CA の CA 署名証明書が必要です。
CA が Online Certificate Status Manager に公開している証明書の署名に使用される CA または CRL 署名証明書をインポートするには、次の手順を実行します。
- Certificate Manager の base-64 CA 署名証明書は、CA のエンドエンティティーページから取得します。
-
オンライン証明書ステータスマネージャーエージェントページを開きます。URL の形式は
https://hostname:SSLport/ocsp/agent/ocsp
です。 - 左側のフレームで、 をクリックします。
- フォームで、エンコードされた CA 署名証明書を Base 64 encoded certificate (including the header and footer) というラベルの付いたテキスト領域内に貼り付けます。
- 証明書が正常に追加されたことを確認するには、左側のフレームで List Certificate Authorities をクリックします。
その結果、新しい CA に関する情報が表示されます。This Update フィールド、Next Update、および Requests Served Since Startup フィールドには、ゼロ (0) の値が表示されます。
6.6.2.1. Certificate Manager と Online Certificate Status Manager の接続確認
Certificate Manager を再起動すると、Online Certificate Status Manager の SSL/TLS ポートに接続しようとします。Certificate Manager が実際に Online Certificate Status Manager と通信したことを確認するには、This Update フィールドおよび Next Update フィールドを確認します。これらのフィールドは、CA が Online Certificate Status Manager と最後に通信したときの適切なタイムスタンプで更新されているはずです。証明書失効リストのステータスのために OCSP サービスにクエリーを試行したクライアントはないため、Requests Served Since Startup フィールドにはゼロ (0) の値が表示されるはずです。
6.6.2.2. 失効情報ストアの設定: 内部データベース
Online Certificate Status Manager は各 Certificate Manager の CRL を内部データベースに保存し、これを CRL ストアとして使用して証明書の失効ステータスを確認します。Online Certificate Status Manager が CRL を内部データベースに格納するために使用する設定を変更するには、以下を実行します。
オンライン証明書ステータスマネージャーコンソールを開きます。
# pkiconsole -d nssdb -n 'optional client cert nickname' https://server.example.com:8443/ocsp
注記pkiconsole
は非推奨となり、今後のメジャーリリースで新しいブラウザーベースの UI に置き換えられます。pkiconsole
は代替 UI がリリースされるまで引き続き使用できますが、今後新しいブラウザーベースの UI が使用可能になった場合でも pki CLI のサポートおよび改良は継続されるため、現時点ではpkiconsole
に相当するコマンドラインの使用が推奨されます。Configuration タブで Online Certificate Status Manager を選択し、Revocation Info Stores を選択します。
右側のペインには、Online Certificate Status Manager が使用できる 2 つのリポジトリーが表示されます。デフォルトでは、内部データベースで CRL を使用します。
-
defStore
を選択して をクリックします。 defStore
値を編集します。- notFoundAsGood。問題の証明書が CRL のいずれかに見つからない場合は、GOOD の OCSP 応答を返すように OCSP サービスを設定します。これを選択しないと、応答は UNKNOWN になり、クライアントが発生した場合にはエラーメッセージが表示されます。
-
byName。OCSP レスポンダーは、応答を行う OCSP レスポンダーの ID を含む基本的な応答タイプのみをサポートします。基本応答タイプ内の ResponderID フィールドは、
ocsp.store.defStore.byName
パラメーターの値によって決まります。byName
パラメーターが true である、または存在しない場合、OCSP 認証局署名証明書サブジェクト名は OCSP 応答の ResponderID フィールドとして使用されます。byName
パラメーターが false の場合、OCSP 認証局署名証明書キーハッシュは OCSP 応答の ResponderID フィールドになります。 - includeNextUpdate。次の CRL 更新時間のタイムスタンプが含まれます。
6.6.2.3. 失効情報ストアの設定: LDAP ディレクトリー
デフォルトで OCSP Manager は CA CRL を内部データベースに保存しますが、LDAP ディレクトリーに公開された CRL を使用するよう設定することもできます。
LDAP ディレクトリーを使用するように OCSP マネージャーを設定する場合は、デフォルトの公開方法である CA
デフォルトでは、ldapStore
メソッドが有効になっていると OCSP ユーザーインターフェイスは証明書のステータスを確認しません。ただし、OCSP サブシステムは、頻繁に更新される CRL を利用して、別の OCSP システムにアクセスすることなくピアの証明書を検証できます。これを行う場合は、計画、インストール、デプロイメントのガイド (Common Criteria Edition) の 9.2.3.18「OCSP 内で最新の CRL を使用してクライアント証明書の検証を有効にする」を参照してください。
LDAP ディレクトリーを使用するように Online Certificate Status Manager を設定するには、以下を実行します。
オンライン証明書ステータスマネージャーコンソールを開きます。
# pkiconsole -d nssdb -n 'optional client cert nickname' https://server.example.com:8443/ocsp
注記pkiconsole
は非推奨となり、今後のメジャーリリースで新しいブラウザーベースの UI に置き換えられます。pkiconsole
は代替 UI がリリースされるまで引き続き使用できますが、今後新しいブラウザーベースの UI が使用可能になった場合でも pki CLI のサポートおよび改良は継続されるため、現時点ではpkiconsole
に相当するコマンドラインの使用が推奨されます。Configuration タブで Online Certificate Status Manager を選択し、Revocation Info Stores を選択します。
右側のペインには、Online Certificate Status Manager が使用できる 2 つのリポジトリーが表示されます。デフォルトでは、内部データベースで CRL を使用します。
-
LDAP ディレクトリーで CRL を使用するには、
ldapStore
オプションを有効にします。 をクリックして -
ldapStore
を選択して をクリックします。 ldapStore
パラメーターを設定します。- numConns.OCSP サービスがチェックする必要のある LDAP ディレクトリーの合計数。デフォルトでは、これは 0 に設定されます。この値を設定すると、host、port、baseDN、refreshInSec フィールドの対応する数値が表示されます。
- host。LDAP ディレクトリーの完全修飾 DNS ホスト名。
- port。LDAP ディレクトリーの SSL/TLS ポート以外のポート。
-
baseDN。CRL の検索を開始する DN。たとえば、
O=example.com
です。 - refreshInSec。接続が更新される頻度。デフォルトは 86400 秒 (毎日) です。
-
caCertAttr。デフォルト値
cACertificate;binary
はそのままにしておきます。これは、Certificate Manager がその CA 署名証明書を公開する属性です。 -
crlAttr。デフォルト値
certificateRevocationList;binary
はそのままにしておきます。これは、Certificate Manager が CRL を公開する属性です。 - notFoundAsGood。問題の証明書が CRL のいずれかに見つからない場合は、GOOD の OCSP 応答を返すように OCSP サービスを設定します。これを選択しないと、応答は UNKNOWN になり、クライアントが発生した場合にはエラーメッセージが表示されます。
-
byName。OCSP レスポンダーは、応答を行う OCSP レスポンダーの ID を含む基本的な応答タイプのみをサポートします。基本応答タイプ内の ResponderID フィールドは、
ocsp.store.defStore.byName
パラメーターの値によって決まります。byName
パラメーターが true である、または存在しない場合、OCSP 認証局署名証明書サブジェクト名は OCSP 応答の ResponderID フィールドとして使用されます。byName
パラメーターが false の場合、OCSP 認証局署名証明書キーハッシュは OCSP 応答の ResponderID フィールドになります。 - includeNextUpdate。Online Certificate Status Manager には、次の CRL 更新時間のタイムスタンプを含めることができます。
6.6.2.4. デフォルトの OCSP 応答署名アルゴリズムを設定する
別の OCSP 応答署名アルゴリズムを使用するように Online Certificate Status Manager を設定するには、以下を実行します。
オンライン証明書ステータスマネージャーコンソールを開きます。
# pkiconsole -d nssdb -n 'optional client cert nickname' https://server.example.com:8443/ocsp
注記pkiconsole
は非推奨となり、今後のメジャーリリースで新しいブラウザーベースの UI に置き換えられます。pkiconsole
は代替 UI がリリースされるまで引き続き使用できますが、今後新しいブラウザーベースの UI が使用可能になった場合でも pki CLI のサポートおよび改良は継続されるため、現時点ではpkiconsole
に相当するコマンドラインの使用が推奨されます。- Configuration タブで、Online Certificate Status Manager を選択します。
General Settings で、プルダウンリストから目的の署名アルゴリズムを選択します。たとえば、
SHA384withRSA
です。注記SHA1 アルゴリズムはサポート対象外となりました。
6.6.2.5. OCSP サービス設定のテスト
以下を実行して、Certificate Manager が OCSP 要求を適切に処理できるかどうかをテストします。
- ブラウザーまたはクライアントで失効チェックをオンにします。
- OCSP サービス用に有効になっている CA から証明書を要求します。
- 要求を承認します。
- ブラウザーまたはクライアントに証明書をダウンロードします。
- CA がブラウザーまたはクライアントで信頼されていることを確認します。
Certificate Manager の内部 OCSP サービスのステータスを確認します。
CA エージェントサービスページを開き、OCSP Services リンクを選択します。
独立した Online Certificate Status Manager サブシステムをテストします。
Online Certificate Status Manager エージェントサービスページを開き、List Certificate Authorities リンクをクリックします。
このページには、CRL を Online Certificate Status Manager に公開するための設定された Certificate Manager に関する情報が表示されます。このページには、最終起動時からの Online Certificate Status Manager のアクティビティーも要約されています。
- 証明書を取り消します。
- ブラウザーまたはクライアントで証明書を確認します。サーバーは、証明書が取り消されたことを返す必要があります。
Certificate Manager の OCSP サービスステータスを再度チェックして、以下の発生を確認します。
- ブラウザーは OCSP クエリーを Certificate Manager に送信します。
- Certificate Manager は OCSP の応答をブラウザーに送信します。
- ブラウザーはその応答を使用して証明書を検証し、証明書を検証できなかったというステータスを返しました。
独立した OCSP サービスサブシステムを再度チェックし、これらの問題が発生することを確認します。
- 証明書マネージャーは、CRL を Online Certificate Status Manager に公開します。
- ブラウザーは OCSP 応答を Online Certificate Status Manager に送信します。
- Online Certificate Status Manager は OCSP の応答をブラウザーに送ります。
- ブラウザーはその応答を使用して証明書を検証し、証明書を検証できなかったというステータスを返しました。
6.6.3. 問題のあるシリアル番号の応答設定
OCSP レスポンダーは、証明書が有効かどうかを判断する前に、証明書の失効ステータスと有効期限を確認します。デフォルトでは、OCSP は証明書の他の情報を検証しません。
notFoundAsGood
パラメーターは、OCSP が無効なシリアル番号を持つ証明書を処理する方法を設定します。このパラメーターはデフォルトで有効になっています。つまり、証明書のシリアル番号が不正であっても、その他の点で証明書が有効な場合、OCSP は証明書に対して GOOD
のステータスを返します。
OCSP が証明書をチェックし、シリアル番号と失効ステータスが不正な場合はその証明書を拒否するためには、notFoundAsGood
設定を変更する必要があります。この場合、OCSP は、不正なシリアル番号を持つ証明書とともに UNKNOWN
ステータスを返します。クライアントはエラーとして解釈し、それに応じて応答できます。
オンライン証明書ステータスマネージャーコンソールを開きます。
# pkiconsole -d nssdb -n 'optional client cert nickname' https://server.example.com:8443/ocsp
注記pkiconsole
は非推奨となり、今後のメジャーリリースで新しいブラウザーベースの UI に置き換えられます。pkiconsole
は代替 UI がリリースされるまで引き続き使用できますが、今後新しいブラウザーベースの UI が使用可能になった場合でも pki CLI のサポートおよび改良は継続されるため、現時点ではpkiconsole
に相当するコマンドラインの使用が推奨されます。Configuration タブで Online Certificate Status Manager を選択し、Revocation Info Stores を選択します。
-
defStore
を選択して をクリックします。 notFoundAsGood
値を編集します。このチェックボックスを選択すると、証明書のシリアル番号が不正な場合でも OCSP はGOOD
の値を返します。チェックボックスの選択を解除すると、OCSP は、UNKNOWN
の値を送信し、クライアントはこれをエラーとして解釈する可能性があります。OCSP Manager を再起動します。
# pki-server restart instance-name
6.6.4. Certificate Manager の内部 OCSP サービスの有効化
Certificate Manager には、OCSP 準拠のクライアントでビルトインの OCSP サービスがあり、Certificate Manager に、証明書の失効ステータスを直接問い合わせることができます。Certificate Manager がインストールされると、OCSP 署名証明書が発行され、OCSP サービスがデフォルトで有効になります。この OCSP 署名証明書は、OCSP サービスリクエストへのすべての応答に署名するために使用されます。内部 OCSP サービスは、Certificate Manager の内部データベースに格納されている証明書のステータスをチェックします。そのため、このサービスを使用するために公開を設定する必要はありません。
クライアントは、Certificate Manager の SSL/TLS エンドエンティティーポートを介して OCSP サービスをクエリーできます。証明書失効ステータスをクエリーすると、Certificate Manager は証明書の内部データベースを検索し、そのステータスを確認してクライアントに応答します。Certificate Manager は発行されたすべての証明書のリアルタイムステータスであるため、失効確認の方法は最も正確です。
インストール時に、すべての CA ビルトイン OCSP サービスが有効になっています。ただし、このサービスを使用するには、CA が Authority Information Access 拡張で証明書を発行する必要があります。
CA のエンドエンティティーに移動します。以下に例を示します。
https://server.example.com:8443/ca/ee/ca
- CA 署名証明書を探します。
-
証明書で Authority Info Access 拡張を探し、
Location URIName
値 (例:https://server.example.com:8443/ca/ocsp
) をメモします。 -
登録プロファイルを更新して Authority Information Access 拡張を有効にし、
Location
パラメーターを Certificate Manager の URI に設定します。証明書プロファイルの編集に関する詳細は、「証明書プロファイルの設定」 を参照してください。 CA インスタンスを再起動します。
# pki-server restart instance-name
Certificate Manager の内部 OCSP サービスを無効にするには、CA の CS.cfg
ファイルを編集し、ca.ocsp
パラメーターの値を false
に変更します。
ca.ocsp=false
6.6.5. OCSPClient プログラムを使用した OCSP 要求の送信
OCSPClient
プログラムは、OCSP 要求の実行に使用できます。以下に例を示します。
# OCSPClient -h server.example.com -p 8080 -d /etc/pki/pki-tomcat/alias -c "caSigningCert cert-pki-ca" --serial 2
CertID.serialNumber=2
CertStatus=Good
OCSPClient
コマンドは、以下のコマンドラインオプションと共に使用できます。
オプション | 説明 |
---|---|
-d database | セキュリティーデータベースの場所 (デフォルト: 現行ディレクトリー) |
-h hostname | OCSP サーバーのホスト名 (デフォルト: example.com) |
-p port | OCSP サーバーのポート番号 (デフォルト: 8080) |
-t path | OCSP サービスパス (デフォルト: /ocsp/ee/ocsp) |
-c nickname | CA 証明書のニックネーム (デフォルト: CA 署名証明書) |
-n times | 送信番号 (デフォルトは 1) |
--serial serial_number | チェックする証明書のシリアル番号 |
--input input_file | DER でエンコードされた OCSP 要求が含まれる入力ファイル |
--output output_file | DER でエンコードされた OCSP 応答を保存する出力ファイル |
-v, --verbose | 詳細モードで実行 |
--help | ヘルプメッセージを表示 |
6.6.6. GET メソッドを使用した OCSP 要求の送信
RFC 6960 で説明されているように、255 バイト未満の OCSP 要求は、GET メソッドを使用して Online Certificate Status Manager に送信できます。GET 経由で OCSP 要求を送信するには、以下のコマンドを実行します。
クエリーされるステータスで、証明書の OCSP 要求を生成します。以下に例を示します。
# openssl ocsp -CAfile ca.pem -issuer issuer.pem -url https://rhcs10.example.com:22443/ocsp/ee/ocsp -serial 16836380 -reqout - | base64 | tr -d '\n' MEIwQDA+MDwwOjAJBgUrDgMCGgUABBT4cyABkyiCIhU4JpmIBewdDnn8ZgQUbyBZ44kgy35o7xW5BMzM8FTvyTwCAQE=
Web ブラウザーのアドレスバーに URL を貼り付けて、ステータス情報を返します。ブラウザーは OCSP 要求を処理し、応答ファイルをシステムにダウンロードできる必要があります。
https://rhcs10.example.com:22443/ocsp/ee/ocsp/MEIwQDA+MDwwOjAJBgUrDgMCGgUABBT4cyABkyiCIhU4JpmIBewdDnn8ZgQUbyBZ44kgy35o7xW5BMzM8FTvyTwCAQE=
設定可能なステータスは
GOOD
、REVOKED
、UNKNOWN
です。openssl
ツールを使用して応答を解析します。# openssl ocsp -respin <ocsp_response_file> -resp_text
あるいは、curl
などのツールを使用して要求を送信し、openssl
を使用して応答を解析することで、コマンドラインから OCSP を実行します。以下に例を示します。
ステータスを照会する証明書の OCSP 要求を生成します。以下に例を示します。
# openssl ocsp -CAfile ca.pem -issuer issuer.pem -url https://rhcs10.example.com:22443/ocsp/ee/ocsp -serial 16836380 -reqout - | base64 | tr -d '\n' MEIwQDA+MDwwOjAJBgUrDgMCGgUABBT4cyABkyiCIhU4JpmIBewdDnn8ZgQUbyBZ44kgy35o7xW5BMzM8FTvyTwCAQE=
curl
を使用して OCSP マネージャーに接続し、OCSP 要求を送信します。# curl --cacert cert.pem https://rhcs10.example.com:22443/ocsp/ee/ocsp/MEIwQDA+MDwwOjAJBgUrDgMCGgUABBT4cyABkyiCIhU4JpmIBewdDnn8ZgQUbyBZ44kgy35o7xW5BMzM8FTvyTwCAQE= > ocspresp.der
openssl
ツールを使用して応答を解析します。# openssl ocsp -respin ocspresp.der -resp_text