2012-07-02 1 views
3
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 форматеAuthenticateAsServer не будет принимать сертификаты в формате PEM

certCollecpfx содержит сертификат в PFX формате

AuthenticateAsClient сервер работает только с PFX формат даже если объект X509Certificate2 для pem и pfx имеют точно такие же исходные данные.

Почему это? Он продолжает говорить мне. Сбой вызова SSPI: данные были плохо отформатированы.

Почему он не принимает формат pem?

Затем я попытался экспортировать формат pem в pfx, и он все еще не принял его - та же ошибка, хотя я экспортировал его в pfx.

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

Если я хорошо помню, чтобы преобразовать сертификат с закрытым ключом из одного формата в другой, вам необходимо загрузить сертификат, используя X509KeyStorageFlags.Exportable флаг. –

ответ

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

Я думаю, что это справедливо только в тех случаях, когда сертификат PEM содержит фактический сертификат вместе с закрытым ключом. Более того, у него есть определенные заголовки, а именно BEGIN-CERTIFICATE и END-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 

 Смежные вопросы

  • Нет связанных вопросов^_^