47

Windowsからエクスポートするのと同じように、秘密鍵なしで証明書をBASE-64でエンコードされたファイルとしてエクスポートしようとしています。Windows からエクスポートすると、メモ帳で .cer ファイルを開くことができます。

以下を試してメモ帳で開くと、バイナリデータが取得されます...読み取れないと思います。

X509Certificate2 cert = new X509Certificate2("c:\\myCert.pfx", "test", X509KeyStorageFlags.Exportable);

File.WriteAllBytes("c:\\testcer.cer", cert.Export(X509ContentType.Cert));

「X509KeyStorageFlags.Exportable」を削除しようとしましたが、うまくいきません。

編集 - 試しました

File.WriteAllText("c:\\testcer.cer",Convert.ToBase64String(cert.Export(X509ContentType.Cert)))

それはうまくいくようですが、「-----BEGIN CERTIFICATE-----」と「-----END CERTIFICATE-----」がありません。

4

4 に答える 4

80

多分

/// <summary>
/// Export a certificate to a PEM format string
/// </summary>
/// <param name="cert">The certificate to export</param>
/// <returns>A PEM encoded string</returns>
public static string ExportToPEM(X509Certificate cert)
{
    StringBuilder builder = new StringBuilder();            

    builder.AppendLine("-----BEGIN CERTIFICATE-----");
    builder.AppendLine(Convert.ToBase64String(cert.Export(X509ContentType.Cert), Base64FormattingOptions.InsertLineBreaks));
    builder.AppendLine("-----END CERTIFICATE-----");

    return builder.ToString();
}
于 2011-01-19T20:24:04.040 に答える
7

これを試して:

X509Certificate2 cerifikata = new X509Certificate2("C://certificate.pfx");
File.WriteAllBytes("D://Test.cer",cerifikata.Export(X509ContentType.Cert));
于 2011-04-03T14:36:11.267 に答える
0

//ただし、「-----BEGIN CERTIFICATE-----」と「-----END CERTIFICATE-----」がありません

これらの欠落している行はオプションです。CA は、設定に応じてそれらを生成する場合と生成しない場合があります。実際的な理由から、これらは Base64 でエンコードされたファイルから削除できます。

于 2016-05-07T17:51:04.530 に答える