如何将 OpenSSL 密钥文件导入 Windows 证书存储
Posted
技术标签:
【中文标题】如何将 OpenSSL 密钥文件导入 Windows 证书存储【英文标题】:How to import an OpenSSL key file into the Windows Certificate Store 【发布时间】:2013-03-18 06:42:15 【问题描述】:我有一个 OpenSSL 生成的 PEM 格式的 X.509 证书及其关联的密钥文件。连接到原型服务器时需要此证书进行身份验证。这在 Linux 上运行良好。我一直在使用 Microsoft SChannel API 在 Windows 平台上驱动 SSL/TLS 连接,但我想使用相同的测试证书。我可以右键单击证书文件并将其导入到我的证书存储中,但我相信私钥不会随它一起导入(即使我已将它们连接到同一个文件中)。
当我运行 SChannel 代码时,我在初始化安全上下文(通过 InitializeSecurityContext)时收到“SEC_E_NO_CREDENTIALS”错误。我怀疑这意味着私钥丢失了。
有谁知道如何测试位于个人(或“我的”)证书存储区(通过“certmgr.msc”访问)的证书中是否存在私钥?。是否可以为商店中的证书导入新的密钥文件?
任何见解或建议将不胜感激。
【问题讨论】:
多么可爱的谜题,我还在努力寻找其中的 C++ 问题…… 公平点,我已经删除了标签 【参考方案1】:要测试是否为证书安装了私钥,请双击 certmgr.msc 中的证书图标。如果它有私钥,它会在属性页显示你有私钥的消息,否则它不会给任何私钥参考。
要使用其私钥导入证书,您可以执行以下操作:
-
使用 openssl pkcs12 将证书及其私钥打包到 PKCS #12 文件或 PFX 文件中。这是example。
将此 PKCS #12 或 PFX 文件导入证书存储区。
请注意,您在导入 pfx 文件时可能会看到错误,例如“此文件无法用于以下用途:个人信息交换”。此错误是由于证书缺少适当的 X.509 v3 扩展(例如使用字段(数字签名等))引起的
【讨论】:
我在测试证书上遇到了这个错误。所以,我更正了证书。如果您遇到错误,请重新发布。 注意,即使有问题,它也会创建文件。在将证书与私钥文件结合时,我错过了一条错误消息。它没有找到其中一个文件。以上是关于如何将 OpenSSL 密钥文件导入 Windows 证书存储的主要内容,如果未能解决你的问题,请参考以下文章