c# - 在运行时加载证书时,如何确定私钥的 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 和密钥容器或任何其他方法来验证它是否已删除?
解决方案
当您X509Certificate2
使用私钥构造对象并且密钥被持久化时,密钥文件将添加到文件系统上的密钥存储位置之一。确切的密钥位置由密钥提供者和上下文(当前用户或本地机器)确定。查找路径在密钥存储和检索文章中进行了描述。
当您使用您引用的文章中的代码删除密钥时(实际上,我是您引用的文章的作者),该文件将从文件系统中删除。
如果密钥存储在硬件设备上,例如智能卡、HSM、TPM,则需要使用设备供应商提供的 API 或工具来检查密钥是否真的被删除。
推荐阅读
- node.js - npm 错误!在运行 npm install -g @angular/cli 时解析“...ain”附近的 JSON 输入意外结束:“src/index.js”
- java - Apache CLI 选项中的空格
- twitter - 如果 Twitter 认为推文有害,如何检索?
- java - 无法访问 androidx.savedstate.SavedStateRegistryOwner
- python - 提取字符串之间的子字符串
- python - 在 Pandas 中,如何对特定的连续列进行一些算术计算
- google-apps-script - 如何从文档中获取评论和回复列表并将内容添加到工作表中?
- visual-studio - 如何使用 Visual Studio 测试资源管理器从 DynamicData 运行一项特定测试?
- c# - 当 Oracle 存储过程仅返回 -1 时对其进行故障排除
- python - 将具有多个值的熊猫数据框列字符串拆分为单独的行