証明書ストアを使用した証明書の管理

一定期間にわたって、 証明書 はユーザーのコンピューターに蓄積されます。 これらの証明書を管理するには、ツールが必要です。 CryptoAPI は、証明書の格納、取得、削除、一覧表示 (列挙)、検証を行う関数としてこれらのツールを提供します。 CryptoAPI には、メッセージに証明書を添付する手段も用意されています。

CryptoAPI には、証明書を管理するための 2 つのメインカテゴリの機能が用意されています。証明書ストアを管理する関数と、証明書を操作する関数、証明書失効リスト (CRL)、およびそれらのストア内の証明書信頼リスト (CCTL) です。

証明書ストアを管理する関数には、論理ストアまたは仮想ストアリモート ストア外部ストア、再配置可能なストアを操作するための関数が含まれます。

証明書、 CRL、および CCTL は証明書ストアで保持および保守できます。 これらは、認証プロセスで使用するために永続化されているストアから取得できます。

証明書ストアは、すべての証明書機能の中心です。 証明書は、"Cert" プレフィックスを持つ関数を使用してストアで管理されます。 一般的な証明書ストアは、次の図に示すように 、証明書 のリンクされた一覧です。

証明書ストア

上の図は次のとおりです。

  • 証明書ストア には、そのストア内の最初の証明書ブロックへのポインターがあります。
  • 証明書ブロックには、その証明書のデータへのポインターと、ストア内の次の証明書ブロックへの "next" ポインターが含まれます。
  • 最後の証明書ブロックの "next" ポインターは NULL に設定 されます
  • 証明書のデータ ブロックには、読み取り専用の証明書コンテキストと、証明書の拡張プロパティが含まれています。
  • 各証明書のデータ ブロックには、存在する証明書へのポインターの数を追跡する 参照カウント が含まれています。

証明書ストア内の証明書は、通常、ディスク ファイルやシステム レジストリなどの何らかの永続的ストレージに保持されます。 証明書ストアは、メモリ内で厳密に作成および開くこともできます。 メモリ ストアは、保持する必要のない証明書を操作するための一時的な証明書ストレージを提供します。

追加のストアの場所を使用すると、ローカル コンピューターのレジストリのさまざまな部分、または適切なアクセス許可が設定されたリモート コンピューターのレジストリでストアを保持および検索できます。

各ユーザーには個人用の個人用ストアがあり、そのユーザーの証明書が格納されます。 マイ ストアは、ローカルまたはリモート コンピューター上のレジストリ、ディスク ファイル、データベース、ディレクトリ サービス、スマート カード、または別の場所など、さまざまな物理的な場所のいずれかに配置できます。 任意の証明書をマイ ストアに格納できますが、このストアはユーザーの個人証明書 (そのユーザーのメッセージの署名と暗号化解除に使用される証明書) 用に予約する必要があります。

認証に証明書を使用することは、一部の信頼された証明書発行者によって発行された証明書があることによって異なります。 信頼された証明書発行者の証明書は、通常、ルート ストアに保持されます。これは現在、レジストリ サブキーに保持されます。 CryptoAPI コンテキストでは、ルート ストアが保護され、ユーザー インターフェイスダイアログ ボックスは、信頼された証明書のみをそのストアに配置するようにユーザーに通知します。 エンタープライズ ネットワークの状況では、システム管理者がドメイン コントローラー コンピューターからクライアント コンピューター上のルート ストアに証明書をプッシュ (コピー) することがあります。 このプロセスにより、ドメインのすべてのメンバーに同様の信頼リストが提供されます。

その他の証明書は、 証明機関 (CA) システム ストアまたはユーザーが作成したファイル ベースのストアに格納できます。

証明書ストアを使用および保守するための関数の一覧については、「 証明書ストア関数」を参照してください。

これらの関数の一部を使用する例については、「 サンプル C プログラム: 証明書ストア操作」を参照してください。

証明書ストアの状態の管理

証明書ストアでの証明書の操作

証明書リンク

コレクション ストア

論理ストアと物理ストア

システム ストアの場所

証明書ストアの移行