X.509 公钥证书 - 证书中包含哪些信息?

前面的文章中,我们已经对证书系统有了一个基本的认识,这篇文章我们一起来看看,公钥证书中都包含那些信息,这些信息都是做什么用的。


整体结构

证书信息都是采用 ASN.1 编码格式编码成二进制数据存储在文件中, 这些信息都有相应的层次结构,我们下边自顶向下的逐一解析。

平时我们可能会通过 Windows 自带的程序打开证书文件,查看证书的信息,看起来这些信息是扁平的,这是因为这些程序对证书信息进行了处理,以便于阅读。

但是,如果你使用 ASN.1 的阅读工具查看这个证书文件的内容,那么它是这样的:

这里,我们不打算分析证书是如何使用 ASN.1 编码的,也不打算详细解析证书的结构,我们只看看证书里面那些重要的信息。


版本

所有的 X.509 证书中都包含 Version 信息。 这个信息主要是告诉程序当前的证书的版本,以便程序能自动解析证书。 当前看到的证书都是 V3.


主体

主体,也就是 Subject。 这个信息表示当前证书是 CA 签发给谁的。 比如我们上面的证书中 Subject 的值是 “CN = *.toutiao.com”, 那么就表明这个证书是签发给 *.toutiao.com 这个主体的。

主体信息主要用于向你的通信的另一方表明你的身份。

比如说: 我是一个 HTTPS 的客户端,我向 toutiao.com 发送了一个 HTTPS GET 的请求。在 TLS 握手阶段,头条的web服务器会向我发送它的证书。 此时,当我收到它的证书之后,我需要校验证书中的 Subject,如果 Subject 和我想要访问的网站域名无法匹配,那么说明我们此时连接到了错误/伪装的网站,TLS 握手会失败, 以保证我们的信息不会被错误的发送给其他第三方。


发行人和序列号

发行人 = Issuer. Issuer 是用于签发当前证书的证书的 Subject。

序列号 = Serial number。 Serial Number 是 Issuer 在签发当前证书时给它指定的一个 Id。 规范中要求,同一个 CA,对于它签发的证书,所有的 Serial Number 必须是唯一的,不能重复。

Issuer 的作用是什么呢?主要用于证书链校验的过程中。我们拿到一个证书之后,需要决定是否信任这个证书。那么就需要构建当前证书的证书链。如何构建证书链?从当前证书开始,逐个寻找它们的 Issuer,然后逐一校验这些证书。


有效期

证书中包含两个时间信息:Valid From 和 Valid To。分别用来指明证书的有效时间的开始和结束时间点。

这个信息也是用来校验整数的合法性的。过期的证书是不被信任的。证书的拥有者需要定期的更新自己的证书,以保证证书不过期。


公钥

这是公钥证书中最重要的部分。

常见的公钥类型包括 RSA,DSA(现在很少了), ECDSA. EdDSA 比较新,目前遇到的还比较少。

公钥证书主要用来进行加密和验证签名。

举个例子:假设我们需要和实体 S 加密通信, 实体 S 有一个证书 C。 它的公钥我们用 pubC 表示,私钥用 privC 表示。

那么,我们可以用 pubC 对我们的信息加密,发送给 S,然后 S 就可以用 privC 解密。因为 privC 只有 S 有,因此别人无法解密我们发送的密文。

S 发送给我们的消息,为了防止在传输过程中被篡改,可以用 privC 进行签名,我们收到消息后,可以用 pubC 校验消息中的签名,以确保消息没有被篡改。

因为 pubC 是公开的,因此,所有能拿到这个消息的实体都可以校验这个签名。但是没有关系,签名中是不包含敏感信息的,敏感信息依然需要单独加密。 签名只是为了确保消息在传输过程中没有被第三方篡改。


证书签名信息

每个证书在被 CA 签发的时候,都会附带上一个签名信息。这个签名信息用于确保当前证书在被 CA 签发后,没有被修改过。

想象一下,如果没有这个签名信息,上述的任何一个信息被篡改,你又能怎么发现呢?

我们称当前证书为 C,C 的 Issuer 的 IssuerC。那么证书的签名是怎么计算的呢?

C 的签名是 Issuer C 用 Issuer C的私钥对证书C的内容签名所得到的。

Issuer C 的公钥是公开的,因此,当我们收到证书 C,想要校验它的签名的时候,我们需要检查 C,找到它的 Issuer,然后从 Issuer 证书中获取公钥信息,然后用这个公钥信息校验 C 的签名是否合法。


扩展信息

证书中都会包含一系列扩展信息。这里我们后续再来继续学习。


关注我,带你了解更多网络通信协议网络信息安全文件系统知识

展开阅读全文

页面更新:2024-03-13

标签:证书   都会   信息   序列号   实体   主体   消息   结构   文件   程序

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top