首页 > 解决方案 > 如何将 Qt 证书和私钥(支持 RSA 和 EC)添加到 Windows 存储并将其用于 Windows Web 服务器

问题描述

我需要在 C++ 程序中实现一个 API,该程序接收 PEM 证书 + 私钥并在内置 Windows Web 服务器上配置 SSL 端口以使用该证书和密钥。

从命令行,这可以通过将 PEM 信息转换为 PFX 文件,然后使用类似的东西安装它来完成:certutil -p <password> -importpfx certAndKey.pfx然后做 a netsh http add sslcert ipport=0.0.0.0:443 certhash=<hash> appid=<appid>,但现在我需要从 C++ 做同样的事情,它应该适用于 RSA 和 EC键。

我有从 PEM 证书和私钥到 QSslCertificate 和 QSslKey 的代码。我还能够使用 CertAddCertificateContextToStore 将 QSslCertificate 存储到 Windows 存储中,但我一直不知道如何获取附加到该证书的 QSslKey 私钥 - 特别是当密钥是 EC 密钥时。到目前为止,我无法找到任何示例来说明如何执行此操作,并且我自己使用 CryptDecodeObjectEx 和 CryptImportKey 的尝试失败了(因为我可能使用了错误的常量/结构/blob)。

那么,有人可以提供一些示例代码来说明如何:

提前感谢任何可以在这里提供帮助的人,因为我淹没在所有这些 API 调用中,这些 API 调用针对各种类型的证书具有不同的常量和结构/blob...

标签: windowscertificateprivate-keyelliptic-curvewincrypt

解决方案


推荐阅读