在 Win7/2008 台机器上从远程 Win2012 CA 安装 PFX 时密码失败

Password fails when Installing PFX from Remote Win2012 CA on a Win7/2008 machine

我制作了一个 WCF 服务,它使用 CERTENROLL 和 CERTCLIENT 库访问远程 CA。我的 GenerateCertificate 请求采用注册请求中使用的密码。我 return 关于生成的证书的元数据和响应中原始字节的 Base64 字符串 XML。

如果我获取原始证书字符串并将其保存为本地 .pfx 文件,我可以在 Win10 或 2012 计算机上轻松安装它。但是,当我在 Win7 或 2008 机器上尝试时,密码不匹配。

我正在提供 X509CertificateRequestCmc 请求,该请求是从内部 X509CertificateRequestPkcs10 请求初始化的,该请求是从模板初始化的。

第一次遇到此错误时,我尝试将 OS Version CryptAttribute 应用于任一请求层,但均未成功。

CX509AttributeOSVersionClass os = new CX509AttributeOSVersionClass();
os.InitializeEncode("6.1.7601");

CX509AttributesClass attribs = new CX509AttributesClass();
attribs.Add((CX509Attribute)os);

CCryptAttributeClass atty = new CCryptAttributeClass();
atty.InitializeFromValues(attribs);

request.CryptAttributes.Add(atty);

我只负责 WebService 层,我无权直接访问 PKI 存储。我的开发服务器应用程序池已设置为 运行 作为 PKI 服务器上允许的 AD 帐户,但我没有该帐户的密码。

是我还是店家?

我为此调用了 MS 的票证。他们表示存在一个已知问题,即 Base64 pfx 文件无法安装在 Win7 和 2008 系统上。答案是解码 Base64 并通过二进制安装。注意不要转换为 .cer,您会丢失私钥。