Certificate 如何将HCRYPTKEY或PRIVATEKEYBLOB导出到PFX文件
我有一个以前生成的RSA私有签名密钥,它存储为。为了更好地管理密钥,我正在尝试将其移动到新证书中。如何将这个blob转换为.pfx证书 我有一个HCRYPTPROV(使用MS_ENHANCED_PROV和PROV_RSA_FULL)。 我可以从CryptImportKey获得HCRYPTKEYCertificate 如何将HCRYPTKEY或PRIVATEKEYBLOB导出到PFX文件,certificate,cryptoapi,Certificate,Cryptoapi,我有一个以前生成的RSA私有签名密钥,它存储为。为了更好地管理密钥,我正在尝试将其移动到新证书中。如何将这个blob转换为.pfx证书 我有一个HCRYPTPROV(使用MS_ENHANCED_PROV和PROV_RSA_FULL)。 我可以从CryptImportKey获得HCRYPTKEY PFXExportCertStoreEx似乎是将其导出到PFX blob(我假设我会将其写入文件)的函数,但我不知道如何将密钥放入其中。如果我正确理解您的问题,您将证书和相应的私钥作为数据blob,并且两
PFXExportCertStoreEx似乎是将其导出到PFX blob(我假设我会将其写入文件)的函数,但我不知道如何将密钥放入其中。如果我正确理解您的问题,您将证书和相应的私钥作为数据blob,并且两者都是分开的。如果您使用CryptoAPI,重要的是要了解API主要面向使用存储在证书存储中的证书和存储在密钥容器中的私钥。类似的函数遵循这种方法,允许您将所有证书从一个证书存储导出到数据blob,该数据blob可以保存为扩展名为.PFX的文件 因此,您可以执行以下操作:
CERT\u store\u PROV\u MEMORY
参数创建临时证书存储CRYPT\u NEWKEYSET
选项创建新密钥容器。您应该为容器指定一些唯一的名称(请参见函数的pszContainer
参数)PRIVATEKEYBLOB
中有关功能的信息导入密钥容器CERT\u KEY\u PROV\u INFO\u PROP\u ID
,这就是证书的扩展属性。重要的是要理解扩展属性不是
X.509规范。扩展属性允许您将与证书相关联的一些附加信息存储在证书存储中(而不是证书本身)。如果是CERT\u KEY\u PROV\u INFO\u PROP\u ID
您可以存储密钥容器中描述的完整信息()CRYPT\u DELETEKEYSET
选项打开密钥容器我所拥有的只是私钥blob,我想将其存储在一个新证书中。我怀疑我需要将
CertAddIncodedCertificateTostore
与创建空白证书的东西交换,但我找不到一个函数来执行此操作。您可以从密钥创建自签名证书,将您刚刚创建的证书链接到密钥并导出该证书。自签名证书代码示例: