TLS 全称是 Transport Layer Security,是用来代替 SSL 的,是一种明码协定,用来提供计算机之间交互的平安通信。次要用于 https 通信,也用于 email,即便通信等。
TLS 握手
TLS 握手通常分为 2 种形式,一种是根本的握手(具体可参照下图),另一种是客户端服务端握手(因为这种用的少,就不细讲)
通过上图可知,咱们这里说的 TLS 握手次要讲的是最根本的 TLS 握手,即只应用服务器的证书来进行加密,具体步骤如下:
1. 客户端与服务器之间通过 3 次握手建设连贯
2. 协商阶段
a. client 发送一个 ClientHello 音讯给 server,这个音讯蕴含了 client 反对的最高的 TLS 协定版本,一个随机数,以后 client 反对的明码组列表和倡议的压缩算法
b.server 发送一个 ServerHello 音讯给 client,这个音讯蕴含了 TLS 协定版本,一个服务器随机数,依据客户端反对的明码组列表最终抉择的明码和最终抉择的压缩算法。
c.server 发送 Certificate(证书)音讯
d.server 发送 ServerKeyExchange 音讯
e.server 发送 ServerHelloDone 音讯,表明握手协商曾经实现
f.client 发送 ClientKeyExchange 音讯,这个音讯蕴含了 PreMasterSecret(这个值是依据 server 发送的 Certificate 外面的 public key 通过加密生成的)和 public key。(留神在发送音讯之前,client 会对 server 发送的 Certificate 进行验证–可参考上面的数字证书,如果验证失败,则握手失败)
g.client 和 server 依据 client 的随机数,server 端的随机数和 PreMasterSecret 计算出一个独特的明码,这个独特的明码叫做 master secret)
3.client 发送 ChangeCipherSpec 记录,通知 server 我前面发送的所有音讯都会是加密的了
a.client 发送一个已验证并且加密的 Finished 音讯。蕴含了对之前音讯的 hash 和 mac
b.server 对接管的 Finished 音讯进行解密并验证 hash 和 mac,如果验证失败,则握手失败
4.server 发送 ChangeCipherSpec 音讯,通知 client 我前面发送的所有音讯都会是加密的了
a.server 发送一个已验证并且加密的 Finished 音讯。蕴含了对之前音讯的 hash 和 mac
b.client 对接管的 Finished 音讯进行解密并验证 hash 和 mac,如果验证失败,则握手失败
5. 利用阶段:此阶段阐明 TLS 握手曾经实现,前面所有发送的音讯都会是加密的
数字证书
数字证书提供的 subjectName(主题名称)设置以后证书的所有权,将以后拜访的地址与证书所有权的地址进行比照,如果一样,则证书无效,如果不一样,则证书有效。同时也会对证书及其父类证书已晓得根证书有效期进行比照,如果不在有效期内,则证书有效
参考链接:
https://sslhow.com/ssl-tls-ha…