证书格式
SSL Certificate Format
我正在开始一些 C++ 编程以使用 libcrypto (OpenSSL) 读取证书,我很好奇证书(“crt”或“cert”)文件的格式。
在文件中,当我用文本编辑器查看时,有多个证书部分,如下所示:
-----BEGIN CERTIFICATE-----
XXXXXXXXXXXX
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
YYYYYYYYYYYY
-----END CERTIFICATE-----
当我在 Windows 中查看此证书时(只需双击“.crt”文件,它只显示证书路径中的一个条目。这些证书部分是否有定义的顺序是?
另外,当我使用 C# 读取证书时,如下所示:
X509Certificate2 cert = new X509Certificate2(@"E:\somePath\device.crt");
var bytes = cert.GetRawCertData();
string temp = Convert.ToBase64String(bytes);
变量 temp 仅显示包含文件中第一个 begin/end 部分的数据。即temp包含“XXXXXXXXXXXX”
该证书也是客户端证书。
所以我很好奇:一个文件中的两个“证书”是什么?
谢谢!
在正常情况下,一个.crt
文件只包含一个证书。但是,在某些情况下,某些应用程序可能允许一个文件包含多个证书。
例如,一些应用程序可能期望文件包含证书链的全部或部分证书。但是,在典型情况下,此类文件的扩展名为 .p12
(PKCS#12) 或 .pfx
。
扩展名.crt
表示文件内容是证书,但扩展名并没有说明文件格式。文件格式可能是 PEM(隐私增强邮件)(RFC 7468), DER (Distinguished Encoding Rules) (X.690) 或其他格式。如果文件内容为文本数据,包含-----BEGIN ?????----
,则文件格式为PEM。另一方面,如果文件包含二进制数据,则文件格式很可能是DER。
下图来自 Illustrated X.509 Certificate" illustrate relationship among ASN.1 (X.680), DER (X.690), BASE64 (RFC 4648) and PEM (RFC 7468).
我猜你手头的 .crt
文件代表了整个或部分证书链。
我正在开始一些 C++ 编程以使用 libcrypto (OpenSSL) 读取证书,我很好奇证书(“crt”或“cert”)文件的格式。
在文件中,当我用文本编辑器查看时,有多个证书部分,如下所示:
-----BEGIN CERTIFICATE-----
XXXXXXXXXXXX
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
YYYYYYYYYYYY
-----END CERTIFICATE-----
当我在 Windows 中查看此证书时(只需双击“.crt”文件,它只显示证书路径中的一个条目。这些证书部分是否有定义的顺序是?
另外,当我使用 C# 读取证书时,如下所示:
X509Certificate2 cert = new X509Certificate2(@"E:\somePath\device.crt");
var bytes = cert.GetRawCertData();
string temp = Convert.ToBase64String(bytes);
变量 temp 仅显示包含文件中第一个 begin/end 部分的数据。即temp包含“XXXXXXXXXXXX”
该证书也是客户端证书。
所以我很好奇:一个文件中的两个“证书”是什么?
谢谢!
在正常情况下,一个.crt
文件只包含一个证书。但是,在某些情况下,某些应用程序可能允许一个文件包含多个证书。
例如,一些应用程序可能期望文件包含证书链的全部或部分证书。但是,在典型情况下,此类文件的扩展名为 .p12
(PKCS#12) 或 .pfx
。
扩展名.crt
表示文件内容是证书,但扩展名并没有说明文件格式。文件格式可能是 PEM(隐私增强邮件)(RFC 7468), DER (Distinguished Encoding Rules) (X.690) 或其他格式。如果文件内容为文本数据,包含-----BEGIN ?????----
,则文件格式为PEM。另一方面,如果文件包含二进制数据,则文件格式很可能是DER。
下图来自 Illustrated X.509 Certificate" illustrate relationship among ASN.1 (X.680), DER (X.690), BASE64 (RFC 4648) and PEM (RFC 7468).
我猜你手头的 .crt
文件代表了整个或部分证书链。