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

Posted

技术标签:

【中文标题】密码学中都有哪些不同的证书类型和格式【英文标题】:What are different certificate types, formats in Cryptography密码学中有哪些不同的证书类型和格式 【发布时间】:2012-07-26 09:29:09 【问题描述】:

我们正在为我们的一位客户添加 SSL 握手中的服务器证书验证。作为密码学和 C 世界的新手,我想我应该先弄清楚我对这些东西的概念,然后再开始实施。

因此,我在 Google 上搜索了很多,主要是为了寻找证书概念,但无法更好地理清我的概念,让我更满意。实际上它增加了更多的混乱。 :)

以下是一些我几乎完全不明白的事情: 1.什么是base64格式?它和DER一样吗? 2. PEM文件总是包含base64内容? 3. Windows 证书存储使用什么格式?是二进制的吗?

有人可以在这里帮助我吗? 如果这些事情能为我清除,将非常感谢。

【问题讨论】:

【参考方案1】:

X.509 证书的结构使用ASN.1 定义。下面是an X.509 certificate整体结构定义的摘录:

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
    

Certificate 值(填充了包含的值)使用DER 格式进行编码,这是一种二进制格式。

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 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile,它实质上定义了证书颁发机构应如何颁发证书以及实体应如何验证远程证书。

您可能还对这些问题感兴趣:

What does it mean for a digital certificate to be “signed”? What is an SSL certificate intended to prove, and how does it do it?

更一般地说,买一本关于 PKI 的书应该会有所帮助。

【讨论】:

感谢布鲁诺,它帮了很多忙!我现在有更清晰的看法。关于 Windows 存储格式,我使用 Crypto API 来检索证书,看起来它只支持二进制格式。我需要编写自己的 base64 编码器来转换这些证书。

以上是关于密码学中都有哪些不同的证书类型和格式的主要内容,如果未能解决你的问题,请参考以下文章

iOS中都有哪些不同类型的通知以及如何正确配置它们?

iOS中都有哪些不同类型的通知以及如何正确配置它们?

https SSL主流数字证书有哪些格式

在电商网站开发中都有哪些常见漏洞

信息安全安全前沿技术都有哪些?

C#bond 中都有哪些可用的数据类型?