12

我有一个 PEM 格式的 OpenSSL 生成的 X.509 证书及其关联的密钥文件。连接到原型服务器时需要此证书进行身份验证。这在 Linux 上运行良好。我一直在使用 Microsoft SChannel API 在 Windows 平台上驱动 SSL/TLS 连接,但我想使用相同的测试证书。我可以右键单击证书文件并将其导入到我的证书存储中,但我相信私钥不会随它一起导入(即使我已将它们连接到同一个文件中)。

当我运行 SChannel 代码时,我在初始化安全上下文(通过 InitializeSecurityContext)时收到“SEC_E_NO_CREDENTIALS”错误。我怀疑这意味着私钥丢失。

有谁知道如何测试位于个人(或“我的”)证书存储中的证书中是否存在私钥,通过“certmgr.msc”访问?是否可以为商店中的证书导入新的密钥文件?

任何见解或建议将不胜感激。

4

1 回答 1

13

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

带有私钥的证书


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

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

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

于 2013-03-28T03:51:16.727 回答