密码学中有哪些不同的证书类型和格式

Tus*_*ake 8 ssl base64 certificate pem der

我们正在为我们的一个客户在SSL握手中添加服务器证书验证.作为密码学和C世界的新手,我想首先要清楚我对这些事情的概念,然后从实施开始.

因此,我搜索了大量关于证书概念的内容,但无法更清楚地了解我的概念,令我满意.实际上它增加了更多的混乱.:)

以下是一些我几乎无法理解的事情:1.什么是base64格式?与DER相同吗?2. PEM文件总是包含base64内容?3. Windows证书库使用的格式是什么?它是二进制的吗?

有人可以帮我这里.如果这些事情得到了解决,我将非常感激.

Bru*_*uno 11

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
    }
Run Code Online (Sandbox Code Playgroud)

Certificate值(与包含的值填充)使用编码DER格式,它是一个二进制格式.

Base64是将二进制序列编码为文本的一般方法,通过减少用于读取ASCII字符的字节集(因此这种表示更长).

PEM格式的证书是证书的DER编码的Base64编码,在每个64个字符的块的末尾有一个换行符,放在分隔符之间:

-----BEGIN CERTIFICATE-----
MIIB2zCCAUSgAwIBAwIBADANBgkqhkiG9w0BAQQFADAYMRYwFAYDVQQDEw1OZXRn
...
-----END CERTIFICATE-----
Run Code Online (Sandbox Code Playgroud)

您也可以使用PEM格式的私钥,例如,分隔符将是-----BEGIN RSA PRIVATE KEY-----(并匹配END).

在线上,在TLS连接期间,使用DER.

Windows证书存储在内部使用的内容并不重要,它应该能够导入/导出DER或PEM/Base64证书.


证书"类型"是比DER/base64格式更广泛的主题.用于SSL/TLS的大多数证书都是X.509证书.然后你会得到使用情况.最常见的是Internet X.509公钥基础结构证书和证书吊销列表(CRL)配置文件,它实质上定义了证书颁发机构应如何颁发证书以及实体应如何验证远程证书.

您可能也对以下问题感兴趣:

更一般地说,获得一本关于PKI的书应该有所帮助.