AuthenticateAsServer不接受PEM格式证书

时间:2012-07-02 14:37:56

标签: c# ios apple-push-notifications mdm

X509CertificateCollection certCollec = 
new X509CertificateCollection(new X509Certificate[1] { xcert});

X509CertificateCollection certCollecpfx = 
new X509CertificateCollection(new X509Certificate[1] { pfxCert });

SSLStream.AuthenticateAsClient(apsHost, certCollec, SslProtocols.Default, false);

certCollec包含PEM格式的证书

certCollecpfx包含PFX格式的证书

AuthenticateAsClient服务器仅适用于PFX格式,即使pem和pfx的X509Certificate2对象具有完全相同的原始数据。

这是为什么?它不断告诉我对SSPI的调用失败:数据格式错误。

为什么不接受pem格式?

然后我尝试将pem格式导出到pfx并且它仍然不接受它 - 同样的错误,即使我将它导出到pfx。

byte[] pemCertBytes = pemCert.Export(X509ContentType.Pfx, "620fpass");
            File.WriteAllBytes(@"C:\test\MyCert.pfx", pemCertBytes);

1 个答案:

答案 0 :(得分:0)

even though the X509Certificate2 object for the pem and the pfx has exactly the same raw data.

我认为只有当pem证书包含实际证书和私钥时才会出现这种情况。此外,它具有包含实际内容的特定标题,即BEGIN-CERTIFICATEEND-CERTIFICATE。 pfx或pkcs#12证书包含证书和私钥,可以选择使用密码加密。如果您曾经将证书导入Windows证书存储区,您可能已经注意到它在提示时输入密码,这主要用于加密证书的私钥。

I then tried to export the pem format into pfx and it still didn't accept it

我建议使用openssl来执行此操作。一般语法是

openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt