我想从 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/