https

来源:互联网 发布:dailyview网络温度计 编辑:程序博客网 时间:2024/05/17 00:04

CRT 即 certificate的缩写,即证书。

X.509 是一种证书格式.对X.509证书来说,认证者总是CA或由CA指定的人,一份X.509证书是一些标准字段的集合,这些字段包含有关用户或设备及其相应公钥的信息。

X.509的证书文件,一般以.crt结尾,根据该文件的内容编码格式,可以分为以下二种格式:

PEM - Privacy Enhanced Mail,打开看文本格式,以"-----BEGIN..."开头, "-----END..."结尾,内容是BASE64编码.
Apache和*NIX服务器偏向于使用这种编码格式.

DER - Distinguished Encoding Rules,打开看是二进制格式,不可读.
Java和Windows服务器偏向于使用这种编码格式


证书中包含什么信息:

  • 证书信息:过期时间和序列号
  • 所有者信息:姓名等
  • 所有者公钥

为什么服务端要发送证书给客户端?

互联网有太多的服务需要使用证书来验证身份,以至于客户端(操作系统或浏览器等)无法内置所有证书,需要通过服务端将证书发送给客户端。

客户端为什么要验证接收到的证书?

中间人攻击

客户端<------------攻击者<------------服务端        伪造证书            拦截请求

客户端如何验证接收到的证书?

为了回答这个问题,需要引入数字签名(Digital Signature)。

+---------------------+| A digital signature ||(not to be confused  ||with a digital       ||certificate)         |            +---------+              +--------+| is a mathematical   |----哈希--->| 消息摘要  |---私钥加密--->| 数字签名 ||technique used       |            +---------+              +--------+|to validate the      ||authenticity and     ||integrity of a       ||message, software    ||or digital document. |+---------------------+

将一段文本通过哈希(hash)和私钥加密处理后生成数字签名。

假设消息传递在Bob,Susan和Pat三人之间发生。Susan将消息连同数字签名一起发送给Bob,Bob接收到消息后,可以这样验证接收到的消息就是Susan发送的

+---------------------+| A digital signature ||(not to be confused  ||with a digital       ||certificate)         |            +---------+| is a mathematical   |----哈希--->|  消息摘要 ||technique used       |            +---------+|to validate the      |                 ||authenticity and     |                 ||integrity of a       |                 ||message, software    |                 对|or digital document. |                 比+---------------------+                 |                                        |                                        |          +--------+               +---------+           | 数字签名 |---公钥解密--->|  消息摘要 |           +--------+               +---------+

当然,这个前提是Bob知道Susan的公钥。更重要的是,和消息本身一样,公钥不能在不安全的网络中直接发送给Bob。

此时就引入了证书颁发机构(Certificate Authority,CA),CA数量并不多,Bob客户端内置了所有受信任CA的证书。CA对Susan的公钥(和其他信息)数字签名后生成证书。

Susan将证书发送给Bob后,Bob通过CA证书的公钥验证证书签名。

Bob信任CA,CA信任Susan 使得 Bob信任Susan,信任链(Chain Of Trust)就是这样形成的。

事实上,Bob客户端内置的是CA的根证书(Root Certificate),HTTPS协议中服务器会发送证书链(Certificate Chain)给客户端。


0 0
原创粉丝点击