如何将 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 证书存储的主要内容,如果未能解决你的问题,请参考以下文章

openssl生成perm文件

如何将 OpenSSL ECDSA 密钥加载到 C# 中?

如何在 OpenSSL 中使用预共享密钥

如何使用命令行中的密码生成 openSSL 密钥?

如何生成支付宝RSA密钥

如何从openssl生成的密钥生成X.509证书