X.509 证书的结构是使用ASN.1定义的。以下是X.509 证书的整体结构定义的摘录:
Certificate ::= SEQUENCE {
tbsCertificate TBSCertificate,
signatureAlgorithm AlgorithmIdentifier,
signatureValue BIT STRING }
TBSCertificate ::= SEQUENCE {
version [0] EXPLICIT Version DEFAULT v1,
serialNumber CertificateSerialNumber,
signature AlgorithmIdentifier,
issuer Name,
validity Validity,
subject Name,
subjectPublicKeyInfo SubjectPublicKeyInfo,
issuerUniqueID [1] IMPLICIT UniqueIdentifier OPTIONAL,
-- If present, version MUST be v2 or v3
subjectUniqueID [2] IMPLICIT UniqueIdentifier OPTIONAL,
-- If present, version MUST be v2 or v3
extensions [3] EXPLICIT Extensions OPTIONAL
-- If present, version MUST be v3
}
使用DER格式(一种二进制格式)Certificate
对值(填充了包含的值)进行编码。
Base64是一种将二进制序列编码为文本的通用方法,通过减少用于可读 ASCII 字符的字节集(因此这种表示形式更长)。
PEM 格式的证书是证书的 DER 编码的 Base64 编码,每个 64 字符块的末尾有一个换行符,放置在分隔符之间:
-----BEGIN CERTIFICATE-----
MIIB2zCCAUSgAwIBAwIBADANBgkqhkiG9w0BAQQFADAYMRYwFAYDVQQDEw1OZXRn
...
-----END CERTIFICATE-----
您还可以拥有 PEM 格式的私钥,例如,在这种情况下,分隔符将是-----BEGIN RSA PRIVATE KEY-----
(并且匹配END
)。
在网络上,在 TLS 连接期间,使用 DER。
Windows 证书存储在内部使用什么并不重要,它应该能够导入/导出 DER 或 PEM/Base64 证书。
证书“类型”是比 DER/base64 格式更广泛的主题。大多数用于 SSL/TLS 的证书都是 X.509 证书。然后你会得到使用配置文件。最常见的是Internet X.509 公钥基础设施证书和证书撤销列表 (CRL) 配置文件,它基本上定义了证书颁发机构应如何颁发证书以及实体应如何验证远程证书。
您可能还对这些问题感兴趣:
更一般地说,买一本关于 PKI 的书应该会有所帮助。