【问题标题】:How to import an OpenSSL key file into the Windows Certificate Store如何将 OpenSSL 密钥文件导入 Windows 证书存储
【发布时间】: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++ 问题……
  • 公平点,我已经删除了标签

标签: windows openssl x509 schannel


【解决方案1】:

要测试是否为证书安装了私钥,请双击 certmgr.msc 中的证书图标。如果它有私钥,它会在属性页显示你有私钥的消息,否则它不会给任何私钥参考。


要使用其私钥导入证书,您可以执行以下操作:

  1. 使用 openssl pkcs12 将证书及其私钥打包到 PKCS #12 文件或 PFX 文件中。这是example
  2. 将此 PKCS #12 或 PFX 文件导入证书存储区。

请注意,您在导入 pfx 文件时可能会看到错误,例如“此文件无法用于以下用途:个人信息交换”。此错误是由于证书缺少适当的 X.509 v3 扩展(例如使用字段(数字签名等))引起的

【讨论】:

  • 我在测试证书上遇到了这个错误。所以,我更正了证书。如果您遇到错误,请重新发布。
  • 注意,即使有问题,它也会创建文件。在将证书与私钥文件结合时,我错过了一条错误消息。它没有找到其中一个文件。
猜你喜欢
  • 1970-01-01
  • 2013-05-27
  • 2016-02-17
  • 2011-11-09
  • 2011-12-16
  • 1970-01-01
  • 1970-01-01
  • 2011-05-18
  • 1970-01-01
相关资源
最近更新 更多