使用该certmgr.msc
实用程序,我可以访问 Windows 证书存储,但我仍然不知道 Windows 将私钥存储在哪里。
例如,对于给定的证书,Windows 告诉我有一个与此证书关联的私钥。但我在哪里可以找到它呢?
答案1
密钥通过 Microsoft 的加密 API:下一代压缩天然气 (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 存储过程中加密的。