証明機関の更新

Certificate Services では、証明機関 (CA) の更新 がサポートされます 。 更新とは、元の証明書の終了日を超えて CA の有効期間を延長するために、CA の新しい証明書を発行することです。 CA は、証明機関 MMC スナップイン内のタスクとして、または Certutil.exe ツール ( -renewCert コマンドを使用) を使用して更新できます。

各更新では、新しい CA 証明書が作成されます。ただし、管理者は新しい公開キーと秘密キーのペアを生成するか、CA 証明書の既存の公開/秘密キー ペアを再利用できます。 整合性と整合性のために、CA が更新される前に CA によって発行された CA 証明書と 証明書失効リスト (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 のみが発行されるためです。

(ICertServerExit インターフェイスと ICertServerPolicy インターフェイスの両方で) GetCertificateProperty メソッドを呼び出すことによって、インデックス付き CA 証明書と CRL を取得できます。 CA 証明書または CRL に関連する特定のプロパティを取得するときに、CA 証明書の 0 から始まるインデックスをプロパティ名に追加できます。 たとえば、CA の 3 番目の証明書に対応する CRL インデックスを取得するには、プロパティ "CRLIndex.2" を ICertServerPolicy::GetCertificateProperty に渡します。テーブルの場合、取得された "CRLIndex.2" プロパティ値は 1 になります。 "CertCount" というプロパティを使用して、CA が 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 証明書を更新すると、証明書インデックスがインクリメントされます。 更新でキーが再利用される場合、キー インデックスは前のキー インデックスと同じになります。 キーが再利用されない場合、キー インデックスは新しい証明書インデックスと一致します。

ICertServerPolicy::GetCertificateProperty

ICertServerExit::GetCertificateProperty