Certificate 如何从CertEnroll导出二进制PFX?

Certificate 如何从CertEnroll导出二进制PFX?,certificate,x509certificate,client-certificates,certenroll,Certificate,X509certificate,Client Certificates,Certenroll,我在使用objEnroll.CreatePFX时遇到了问题,其中唯一的返回类型是string,我需要的是一个二进制输出,与打开证书MMC并导出PFX时发生的情况相当 这很重要,因为我需要原始的PFX格式,这样我就可以将私钥导入OSX和iPhone CX509Enrollment objEnroll = new CX509Enrollment(); objEnroll.InitializeFromTemplateName( X509Certificat

我在使用objEnroll.CreatePFX时遇到了问题,其中唯一的返回类型是string,我需要的是一个二进制输出,与打开证书MMC并导出PFX时发生的情况相当

这很重要,因为我需要原始的PFX格式,这样我就可以将私钥导入OSX和iPhone

    CX509Enrollment objEnroll = new CX509Enrollment();
   objEnroll.InitializeFromTemplateName(
                X509CertificateEnrollmentContext.ContextUser,
                templateName);
   // ...
   objEnroll.Enroll();
   string pfxString = objEnroll.CreatePFX("q", PFXExportOptions.PFXExportEEOnly, EncodingType.XCN_CRYPT_STRING_BINARY);

设置
编码类型
以便将其正确转换为二进制输出的正确方法是什么?(类似于Windows证书导出)

只需将base64字符串写入文件即可

System.IO.File.WriteAllText("MyFile.pfx", pfxString);
Windows将处理PFX

您还可以使用以下命令将base64转换为二进制

System.IO.File.WriteAllBytes("MyFile.pfx", System.Convert.FromBase64String(pfxString));