【问题标题】:c# System.Security.Cryptography.X509Certificates.X509ContentType.Cert is this DER?c# System.Security.Cryptography.X509Certificates.X509ContentType.Cert 这是 DER?
【发布时间】:2016-02-24 10:18:27
【问题描述】:

如何确定我导出的证书文件是 DER 编码的? 有没有办法检查文件?

我可以将加载到内存中的证书导出到文件中

string strFilename = _rksvpath + cert.GetSerialNumberString() + ".cer";
byte[] bytesCertExport = cert.Export(System.Security.Cryptography.X509Certificates.X509ContentType.Cert);
File.WriteAllBytes(strFilename, bytesCertExport);

文件没问题,我可以用 certutil 来证明

C:\>certutil -dump C:\temp\0104A73D4557FCE026120AC356.cer
X.509-Zertifikat:
Version: 3
Seriennummer: 0104a73d4557fce026120ac356
Signaturalgorithmus:
Algorithmus Objekt-ID: 1.2.840.113549.1.1.11 sha256RSA
Algorithmusparameter: 05 00
...

但是,我在 certutil 的输出或 Windows 证书查看器(使用以下命令打开)中找不到有关编码的任何信息

"C:\Windows\system32\rundll32.exe" cryptext.dll,CryptExtOpenCER C:\temp\0104A73D4557FCE026120AC356.cer

【问题讨论】:

    标签: c# x509certificate


    【解决方案1】:

    X.509 证书始终使用可分辨编码规则 (DER) 进行编码。

    唯一的区别是 DER 值如何存储在文件中,可以是精确的二进制副本,也可以是使用 Base64 对二进制数据进行编码。标准工具不知道使用什么文件格式(二进制或 Base64)。您可以读取文件的第一个字节。如果是 ASCII 48,则该文件是证书的精确二进制副本,否则,二进制副本是带有或不带有 PEM 页眉/页脚的 base64 编码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-30
      • 2017-07-01
      • 2011-07-31
      • 1970-01-01
      • 1970-01-01
      • 2013-12-14
      • 1970-01-01
      • 2017-08-20
      相关资源
      最近更新 更多