我有 OpenSSL 生成的 PEM 格式的 X.509 证书及其关联的密钥文件。连接到原型服务器时需要此证书进行身份验证。这在 Linux 上运行良好。我一直在使用 Microsoft SChannel API 在 Windows 平台上驱动 SSL/TLS 连接,但我想使用相同的测试证书。我可以右键单击证书文件并将其导入到我的证书存储中,但我相信私钥不会随之导入(即使我已将它们连接到同一个文件中)。
当我去运行 SChannel 代码时,在初始化安全上下文(通过 InitializeSecurityContext)时收到“SEC_E_NO_CREDENTIALS”错误。我怀疑这意味着私钥丢失了。
有谁知道如何测试位于个人(或“我的”)证书存储中的证书中是否存在私钥(通过“certmgr.msc”访问)?是否可以为商店中的证书导入新的密钥文件?
任何见解或建议将不胜感激。
要测试是否为证书安装了私钥,请双击 certmgr.msc 中的证书图标。如果有私钥,则会在属性页中显示一条消息,表明您有私钥,否则不会给出任何私钥参考。
要导入证书及其私钥,您可以执行以下操作:
- 使用 openssl pkcs12 将证书及其私钥打包到 PKCS #12 文件或 PFX 文件中。这是一个example https://stackoverflow.com/questions/808669/convert-a-cert-pem-certificate-to-a-pfx-certificate.
- 将此 PKCS #12 或 PFX 文件导入到证书存储中。
请注意,导入 pfx 文件时您可能会看到错误,例如“此文件无法用作以下用途:个人信息交换”。此错误是由于证书缺少适当的 X.509 v3 扩展(例如使用字段(数字签名等))引起的
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)