0

我需要在 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)。

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

  • 从 QSslKey 获取存储在某些 Microsoft 密钥库中的 RSA 和 EC 密钥的密钥
  • 告诉 Windows 这个密钥实际上是使用 CertAddCertificateContextToStore(或其他函数)添加的证书的私钥
  • 如果需要使用另一个 API 来添加附加了私钥的证书,也包括那个

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

4

0 回答 0