c++ - 将 Windows 商店中的私钥转换为 PEM(用于 OpenSSL)

标签 c++ security openssl cryptoapi

我想从 Windows 商店获取私钥并将其转换为 PEM,以便在 OpenSSL 中使用它。 几个小时以来,我一直在寻找一种方法!

  • 我使用 CertFindCertificateInStore() 获取 CERT_CONTEXT(我知道它包含使用搜索参数的私钥)。
  • 接下来,我使用 CryptAcquireCertificatePrivateKey() 获取 HCRYPTPROV(只是因为函数的名称)。
  • 现在,我使用 CryptGetUserKey() 来获取 HCRYPTKEY(只是因为它听起来不错......?!)

但现在我又卡住了。

我认为这是微软通过隐匿来确保我们永远无法获得私钥的安全措施。

最佳答案

我保留原样的答案(毕竟没有 dbasic 我会被卡住:-)),但我还有更多要补充的:

CryptExportPKCS8() 支持终止于 XP/2003,因此我们必须使用 PFXExportCertStoreEx(),但是此函数导出整个存储区。因此,为了仅导出一个证书,您需要使用内存存储。

查看此示例以了解如何执行此操作: http://msdn.microsoft.com/en-us/library/windows/desktop/aa382037(v=vs.85).aspx

将您想要的证书插入内存存储,然后使用 PFXExportCertStoreEx() 导出您需要的内容。

关于c++ - 将 Windows 商店中的私钥转换为 PEM(用于 OpenSSL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16775911/

相关文章:

c# - 如何强制第三方服务尊重安全?

Android 2.2 : javax.net.ssl.SSLException : Not trusted server certificate - Android 2. 3 : javax.net.ssl.SSLPeerUnverifiedException:没有对等证书

ios - 为 OpenSSL 运行 make 时出现 Clang 错误(iOS、i386、x86_64)

ssl - SAN 中用于自签名 ssl 证书的非 TLD 通配符

c++ - 如何将多种数据类型接受到我的输入流中?

java - 如何向所有人开放端点?

c++ - 带 std::vector 的 XTEA 函数

java - 使用 SHA-512 和 salt 来散列 MD5 散列密码?

c++ - 是 boost :regex block size limited?

c++ - 多次加载 DLL?