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 形式の証明書が含まれています

certCollecpfx には、PFX 形式の証明書が含まれています

AuthenticateAsClient サーバーは、pem と pfx の X509Certificate2 オブジェクトがまったく同じ生データを持っている場合でも、PFX 形式でのみ機能します。

どうしてこれなの?SSPI への呼び出しに失敗しました: データの形式が正しくありません。

なぜpem形式を受け入れないのですか?

次に、pem形式をpfxにエクスポートしようとしましたが、まだ受け入れられませんでした.pfxにエクスポートしたにもかかわらず、同じエラーが発生しました.

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

1 に答える 1

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
于 2013-01-08T19:50:25.487 に答える