【基础】HTTPS
HTTPS
What
HTTPS的全称是Hypertext Transfer Protocol Secure
, 中文名称超文本传输安全协议
。是一种通过计算机网络进行安全通信的传输协议。HTTPS经由HTTP进行通信,但利用SSL/TLS来加密数据包。HTTPS开发的主要目的,是提供对网站服务器的身份认证,数据安全性与数据完整性。
HTTPS主要做三个事情
- 身份认证
- 数据安全性
- 数据完整性
Why
HTTP在传输过程不安全,明文,容易被中间人劫持,篡改,伪造数据请求。
HTTPS解决HTTP传输过程不安全
How
身份认证
使用非对称加密, 服务端保存私钥,颁发公钥给客户端。
服务端能用私钥解密,代表客户端是使用服务端颁发的公钥进行加密。
客户端能用公钥解密,代表是服务端使用私钥加密。
但这里还存在一个问题,就是公钥是任何人都可以颁发,中间人可以伪造颁发公钥,窃取客户端提交数据,使用自己私钥解密得到内容。
所以需要一个有公信力的机构,证明公钥是对应服务端颁发,这里需要引入CA(Certificate Authority
), 证书认证机构,证明公钥是对应服务端颁发。
数据安全性
客户端发起HTTPS请求,生成一个随机数作为会话密钥,作为内容加密的密钥,使用对称密码对内容加密传输。
会话密钥生成步骤
- 客户端发起HTTPS请求
- 服务端返回HTTPS证书
- 客户端验证证书合法性并生成随机数加密传输服务端
- 服务端私钥进行解密得到随机数并存储作为会话密钥
- 服务端会话密钥对称加密内容传输客户端
- 客户端使用会话密钥对称解密得到内容渲染
数据完整性
除了对内容加密,还会使用摘要算法,对内容生成摘要(签名),把签名同时传输。
校验步骤
- 对内容生成摘要
- 解密然后取其中内容生成摘要
- 对比摘要