如何将OpenSSL密钥文件导入Windows证书存储库

12
我有一个用OpenSSL生成的PEM格式的X.509证书及相应的密钥文件。当连接到原型服务器时,需要使用此证书进行身份验证,在Linux上可以正常使用。我一直在Windows平台上使用Microsoft SChannel API来驱动SSL/TLS连接,但我想使用同样的测试证书。我可以右键单击证书文件并将其导入证书存储区,但我相信私钥没有随之导入(即使我已经将它们串联到同一个文件中)。
当我尝试运行SChannel代码时,我在初始化安全上下文(通过InitializeSecurityContext)时会收到“SEC_E_NO_CREDENTIALS”错误。我怀疑这意味着缺少私钥。
有人知道如何测试位于个人(或“My”)证书存储区的证书是否具有私钥,并且是否可以为存储区中的证书导入新的密钥文件吗?
如有任何见解或建议,将不胜感激。

多可爱的谜题啊,我还在努力地寻找那个C++问题呢… - Daniel Frey
公正的观点,我已经移除了标签。 - Gearoid Murphy
1个回答

13

要测试证书的私钥是否已安装,请在 certmgr.msc 中双击证书图标。如果有私钥,则在属性页面中会显示一个消息,指出您有私钥;否则,它将不会提供任何关于私钥的参考。

带有私钥的证书


要导入带有其私钥的证书,可以执行以下操作:

  1. 使用openssl pkcs12将证书及其私钥打包成PKCS#12文件或PFX文件。这里是一个示例
  2. 将此PKCS#12或PFX文件导入证书存储区。

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


我在测试证书上遇到了这个错误。所以,我纠正了证书。如果你也遇到了这个错误,请重新申请证书。 - doptimusprime
请注意,即使存在问题,它也会创建文件。在将证书与私钥文件合并期间,我错过了一个错误消息。它没有找到其中一个文件。 - N-ate

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接