windows - 如何将 OpenSSL key 文件导入 Windows 证书存储区

标签 windows openssl x509 schannel

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

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

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

如有任何见解或建议,我们将不胜感激。

最佳答案

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

Certificate with a private key


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

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

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

关于windows - 如何将 OpenSSL key 文件导入 Windows 证书存储区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15671476/

相关文章:

windows - 如何在 Windows 中隐藏光标? (德尔福)

linux - Windows SVN 服务器和 Linux SVN 客户端 - 有风险吗?

ssl - OpenSSL 对客户端证书 URL 的支持

ssl 链顺序不正确

c# - 使用 x509 证书签署 xml 文档

windows - 退出批处理时自动重启批处理文件

windows - 为什么非交互式批处理脚本认为我按下了 control-C?

c - EVP 加密核心已转储

windows - 使用 MSVC 2010 构建 OpenSSL 1.0.1c 时出错

ruby - 如何在 Win7-64 中修复 (OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed)