我有一个 OpenSSL 生成的 PEM 格式的 X.509 证书及其关联的 key 文件。连接到原型(prototype)服务器时需要此证书进行身份验证。这在 Linux 上运行良好。我一直在使用 Microsoft SChannel API 在 Windows 平台上驱动 SSL/TLS 连接,但我想使用相同的测试证书。我可以右键单击证书文件并将其导入我的证书存储区,但我相信私钥不会随它一起导入(即使我已将它们连接到同一个文件中)。
当我运行 SChannel 代码时,我在初始化安全上下文(通过 InitializeSecurityContext)时收到“SEC_E_NO_CREDENTIALS”错误。我怀疑这意味着私钥丢失了。
有谁知道如何测试位于个人(或“我的”)证书存储区(通过“certmgr.msc”访问)的证书中是否存在私钥?是否可以为商店中的证书导入新的 key 文件?
如有任何见解或建议,我们将不胜感激。
最佳答案
要测试是否为证书安装了私钥,请双击 certmgr.msc 中的证书图标。如果它有私钥,它会在属性页中显示您有私钥的消息,否则它不会给出任何私钥的引用。
要导入带有私钥的证书,您可以执行以下操作:
- 使用 openssl pkcs12 将证书及其私钥打包到 PKCS #12 文件或 PFX 文件中。这是一个 example .
- 将此 PKCS #12 或 PFX 文件导入证书存储区。
请注意,您在导入 pfx 文件时可能会看到错误,例如“此文件无效,无法用作以下用途:个人信息交换”。此错误是由于证书缺少适当的 X.509 v3 扩展(例如使用字段(数字签名等))导致的
关于windows - 如何将 OpenSSL key 文件导入 Windows 证书存储区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15671476/