web-dev-qa-db-ja.com

証明書の秘密キーはWindows 7のどこに保存されますか?

certmgr.mscユーティリティを使用すると、Windowsの証明書ストアにアクセスできますが、Windowsが秘密キーを格納している場所がわかりません。

たとえば、特定の証明書の場合、Windowsは、この証明書に関連付けられた秘密鍵があることを通知します。しかし、どこで物理的に見つけることができますか?

12
TheByeByeMan

キーは、MicrosoftのCryptography API:Next Generation(CNG)を介して保存されます。

保管場所:

  • ユーザープライベート:
    %APPDATA%\Microsoft\Crypto\Keys
  • ローカルシステムプライベート:
    %ALLUSERSPROFILE%\Application Data\Microsoft\Crypto\SystemKeys
  • ローカルサービスプライベート:
    %WINDIR%\ServiceProfiles\LocalService
  • プライベートネットワークサービス:
    %WINDIR%\ServiceProfiles\NetworkService
  • 共有プライベート:
    %ALLUSERSPROFILE%\Application Data\Microsoft\Crypto\Keys

説明:

CNGは、公開鍵または秘密鍵の暗号化などの暗号化機能を使用するアプリケーションを作成する現在および将来の要求と、鍵素材のストレージの要求に適応できる秘密鍵ストレージのモデルを提供します。キーストレージルーターは、このモデルの中心的なルーチンであり、Ncrypt.dllに実装されています。アプリケーションは、キーストレージルーターを介してシステム上のキーストレージプロバイダー(KSP)にアクセスします。これにより、アプリケーションとストレージプロバイダー自体の両方から、キーの分離などの詳細が隠されます。次の図は、CNGキー分離アーキテクチャの設計と機能を示しています。
Key Storage Architecture
ソース

Tim Gが指摘したように、キーはCNG APIを介して格納するプロセスで暗号化されるため、ファイルレベルで読み取ることはできません。

14
hub