HTTPS 笔记

HTTPS 也可以叫做 HTTP over TLS 或者 HTTP over SSL。

数据在互联网中传输时,中间要经过需要中间节点,而中间节点的安全性并不能被保证,可能会被监听或者修改,而 HTTPS 主要可以防止中间人攻击。

1

客户端接收服务端公钥

1.1

客户端将自己支持的加密算法类型 和 检验数据完整性的 HASH 算法类型告诉服务端。

服务端从客户端传来的 加密算法 中选出一种支持的类型,用于生成 一对 非对称 密钥对(公钥密钥)。

将这个密钥对的公钥和自己的证书发给客户端。

1.2

证书中包含了此证书的 CA,过期时间等信息。 主要内容包括:网站域名,网站公钥,此证书签名算法(比如MD5)。 使用指定的签名算法对上面的内容签名,并经过了 CA 使用自己的私钥对签名加密。

CA 使用自己的私钥 对 这个证书 加密。

1.3

客户端得到服务器发来的加密证书后,在本地对这个证书进行合法性检查:
使用各家 CA 储存在客户端本地的公钥对 证书 进行解密,得到 网站的证书。

使用 CA 的公钥对 加密的签名 解密,得到一个签名。

使用证书指定的签名算法对证书内容签名,也得到一个签名。

对比两个签名是否一致,如果一致则检查通过。

2

客户端生成密钥,并发给服务端。

2.1

客户端将随机生成 一个 对称加密 的密钥,并使用服务端给的 公钥 对这个 对称加密密钥 进行加密,并生成 HASH 值,发给服务端。

2.2

服务端拿到信息后,使用 私钥 进行解密取出 对称加密的密钥,并验证 HASH 值。

验证无误后,使用这个 对称加密密钥 对握手信息进行加密,发给客户端。

3

客户端与网站使用对称加密开始通信。

3.1

客户端解密和 HASH 验证,无误则连接建立成功。

使用这个 对称加密的密钥 开始 应用层面的内容传输。