証明機関の更新
Certificate Services では、証明機関 (CA) の更新がサポートされます。 更新とは、CA が元の証明書の終了日を超えて CA の有効期間を延長するための新しい証明書を発行することです。 CA は、証明機関 MMC スナップイン内のタスクとして、または Certutil.exe ツール (-renewCert コマンドを使用して) を使用して更新できます。
各更新では、新しい CA 証明書が作成されます。ただし、管理者は、新しい公開キーと秘密キーのペアを生成するか、CA 証明書の既存の公開キーと秘密キーのペアを再利用できます。 整合性と整合性のために、CA 証明書と 証明書失効リスト CA によって発行された CRL (CRL) は、CA の更新後に更新できるようになります。 これらを使用できるようにするために、Certificate Services は CA 証明書、CRL、およびキーのインデックスを保持します。
さまざまな CA 更新操作中の CA 証明書と CRL のインデックス名とサフィックス名は次のとおりです。
操作 | CA 証明書インデックス | CA 証明書ファイル名サフィックス | CRL とキー インデックス | CRL とキー コンテナー名のサフィックス |
---|---|---|---|---|
元の CA のインストール | 0 | "" | 0 | "" |
新しいキーを使用した更新 | 1 | "(1)" | 1 | "(1)" |
更新の再利用キー | 2 | "(2)" | 1 | "(1)" |
更新の再利用キー | 3 | "(3)" | 1 | "(1)" |
新しいキーを使用した更新 | 4 | "(4)" | 4 | "(4)" |
更新の再利用キー | 5 | "(5)" | 4 | "(4)" |
新しいキーを使用した更新 | 6 | "(6)" | 6 | "(6)" |
更新の再利用キー | 7 | "(7)" | 6 | "(6)" |
CA がインストールされている場合、証明書インデックスは 0 で、証明書サフィックスは "" (空の文字列) になります。 証明書が更新されるたびに (キーが再利用されるかどうかにかかわらず)、証明書インデックスは 1 ずつインクリメントされ、証明書ファイル名のサフィックスは "(n)" という形式の文字列になります。ここで、n は CA 証明書が更新された回数を表します。 最初の更新後、証明書インデックスは 1 で、証明書ファイル名のサフィックスは "(1)" になります。 2 回目の更新後、証明書インデックスは 2 になり、証明書ファイル名のサフィックスは "(2)" になります。
CA 証明書のインデックスとサフィックスは CA が更新されるたびに 1 ずつインクリメントされますが、更新プロセスに新しい公開キーと秘密キーのペアが含まれている場合にのみ、CRL とキー インデックス、およびファイル名サフィックスが CA 証明書インデックスに設定されます。 そうでない場合、これらのインデックスとサフィックスの値は、最後のインデックスの値と同じままです。 更新時に、管理者は新しいキー ペアを生成するか、既存のキー ペアを使用するかを指定します。 (証明機関 MMC スナップインでは、ユーザー インターフェイスのオプションによって新規または既存のキー ペアが指定されます。Certutil.exe ツールでは、コマンド certutil -renewCert は新しいキー ペアで CA を更新し、certutil -renewCert ReuseKeys コマンドは既存のキー ペアで CA を更新)。
CRL インデックスはキー インデックスに直接関連付けられます。キー インデックスは、更新に新しいキー ペアが使用された場合にのみ CA 証明書インデックスに設定されます。 最初の更新 (新しいキー ペアを使用) の後、CRL とキーのインデックスは 1 に設定され、CRL とキー コンテナー名のサフィックスは "(1)" になります。 ただし、2 回目の更新後、CRL とキーのインデックスは 1 のままになり、CRL とキー コンテナー名のサフィックスも "(1)" のままです。これは、2 つ目の更新で既存のキー ペアが使用され、CA キー ペアごとに 1 つの CRL のみが発行されるためです。
インデックス付き CA 証明書と CRL を取得するには、GetCertificateProperty メソッド (ICertServerExit と ICertServerPolicyインターフェイスの両方) を呼び出します。 CA 証明書または CRL に関連する特定のプロパティを取得する場合は、CA 証明書の 0 から始まるインデックスをプロパティ名に追加できます。 たとえば、CA の 3 番目の証明書に対応する CRL インデックスを取得するには、プロパティ "CRLIndex.2" を ICertServerPolicy::GetCertificateProperty渡します。テーブルの場合、取得した "CRLIndex.2" プロパティ値は 1 になります。 "CertCount" というプロパティを使用して、CA 証明書が発行された回数を確認できます。
CA 証明書と CRL には、証明書とキー インデックスに関する情報を提供する拡張機能が含まれています。 拡張機能は Wincrypt.h で szOID_CERTSRV_CA_VERSION として定義され、値は "1.3.6.1.4.1.311.21.1" です。 拡張データは、DWORD 値です (拡張機能ではX509_INTEGERとしてエンコードされます)。下位 16 ビットは証明書インデックス、上位 16 ビットはキー インデックスです。
CA の初回インストールでは、証明書インデックスが 0、キー インデックスが 0 になります。 CA 証明書を更新すると、証明書インデックスがインクリメントされます。 キーが更新で再利用される場合、キー インデックスは前のキー インデックスと同じになります。 キーが再利用されない場合、キー インデックスは新しい証明書インデックスと一致します。
関連トピック