首页 > 解决方案 > 在运行时加载证书时,如何确定私钥的 CSP/KSP 和密钥容器?

问题描述

当我们加载 X509Certificate2 时给出

var cert = new X509Certificate2(pfxFile,"somepassphrase");

除非指定了 X509KeyStorageFlags.EphemeralKeySet,否则私钥将被保留(我无法指定此选项,因为似乎存在错误 - 当我提交我的 https 发布请求时,我得到“安全包中没有可用的凭据”),我完成后需要确保将私钥从机器上移除。我正在使用此处提供的 c# 示例代码来删除密钥:https://www.pkisolutions.com/deleting-certificates-from-windows-certificate-store-programmatically-powershell-and-c/,我想检查一下手动这实际上是删除?如何确定私钥所在的 CSP/KSP 和密钥容器或任何其他方法来验证它是否已删除?

标签: c#private-keyx509certificate2

解决方案


当您X509Certificate2使用私钥构造对象并且密钥被持久化时,密钥文件将添加到文件系统上的密钥存储位置之一。确切的密钥位置由密钥提供者和上下文(当前用户或本地机器)确定。查找路径在密钥存储和检索文章中进行了描述。

当您使用您引用的文章中的代码删除密钥时(实际上,我是您引用的文章的作者),该文件将从文件系统中删除。

如果密钥存储在硬件设备上,例如智能卡、HSM、TPM,则需要使用设备供应商提供的 API 或工具来检查密钥是否真的被删除。


推荐阅读