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


12

使用该certmgr.msc实用程序,我可以访问Windows证书存储,但是我仍然无法弄清Windows在何处存储私钥。

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

Answers:


14

密钥通过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存储密钥的过程中被加密。


4
这些密钥位置是正确的,但是我要强调/明确一点:Windows密钥隔离服务使密钥变得晦涩难懂,因此它们无法从用户本身或操作系统级别的操作系统中读取。(它们在资源管理器中作为文件可见,但是您不能将其真实内容转储到十六进制查看器中,也不能在记事本中以丑陋的ASCII格式转储-它仍将是丑陋的ASCII,只是不像Unixoid系统中那样是真实的表示形式。)
Tim G

@TimG您能指出任何描述这种晦涩的文档吗?(我意识到这有点晚了,但我可以希望...)
马丁·邦纳
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.