Windows 7 中的证书私钥存储在哪里?

The*_*Man 13 windows windows-7 certificate

使用该certmgr.msc实用程序,我可以访问 Windows 证书存储,但我仍然无法弄清楚 Windows 存储私钥的位置。

例如,对于给定的证书,Windows 告诉我有一个与此证书关联的私钥。但是我在哪里可以找到它?

hub*_*hub 15

密钥通过 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 密钥隔离架构的设计和功能。
密钥存储架构
来源

注意

正如 Tim G 所指出的,密钥在文件级别不可读,因为它们在通过 CNG API 存储的过程中被加密。

  • 这些密钥位置是正确的,但我有一点要强调/澄清:Windows 密钥隔离服务掩盖了密钥,因此在用户或管理员级别从操作系统内部无法读取它们。(它们在资源管理器中作为文件可见,但你不能在十六进制查看器中转储它们的真实内容,或者在记事本中转储为丑陋的 ASCII——它仍然是丑陋的 ASCII,只是不像 Unixoid 系统中的真实表示。) (4认同)
  • @TimG 你能给我指出任何描述这种模糊的文档吗?(我意识到有点晚了,但我希望......) (2认同)