对称加密是指在对数据进行加密时,双方都使用 同一个 密钥,这个密钥被称为「会话秘钥」。
非对称加密是指在对数据进行加密时,双方使用 不同的 密钥,
生成密钥对的一方将持有「私钥」(通常是服务端,需要保密),另一方则持有「公钥」。
被「私钥」加密的数据必须使用「公钥」解密,反之亦然。
- HTTP 是超文本传输协议,信息是明文传输,存在安全风险的问题。HTTPS 则解决 HTTP 不安全的缺陷,在 TCP 和 HTTP 网络层之间加入了 SSL/TLS 安全协议,使得报文能够加密传输。
- HTTP 连接建立相对简单, TCP 三次握手之后便可进行 HTTP 的报文传输。而 HTTPS 在 TCP 三次握手之后,还需进行 SSL/TLS 的握手过程,才可进入加密报文传输。
- HTTP 的端口号是 80,HTTPS 的端口号是 443。
- HTTPS 协议需要向 CA(证书权威机构)申请数字证书,来保证服务器的身份是可信的。
简单地说,HTTPS 就是在 HTTP 的基础上加入了 SSL/TLS协议,通过混合加密、数字签名和数字证书来规避窃听风险、篡改风险和冒充风险。
- 窃听风险,比如通信链路上可以获取通信内容,用户号容易没。
HTTPS传输数据过程中,即用到了非对称加密,也用到了对称加密;

- [公钥加密,私钥解密] 保证传输内容不泄露,因为只有私钥才能解密出公钥加密的内容;
- [私钥加密,公钥解密] 保证身份不被冒充,因为公钥只能解密由对应私钥加密的内容,而私钥是不可泄露的;若数据和私钥都是伪造的,那客户端的公钥无法解密该数据。
为了保证 发送的数据 不被篡改,在发送数据的同时,也将数据对应的 数字签名 一并发送过去。
利用哈希算法计算出数据的 哈希值 ,随后使用 私钥 / 公钥 加密便得到 数字签名。

尽管有了混合加密和数字签名,但依旧无法确保传输是安全的;
在进行数字签名时,有可能出现 数据、哈希值和公钥被同时替换 的可能。
据此,引入第三方机构:CA(数字证书认证机构),服务器的公钥 注册到CA中,而CA使用 自己的私钥 对 服务器的公钥 进行加密,以得到 数字证书。由于 私钥 仅由CA持有,因此无法被任何人伪造。

大致流程可见下图,但其实还有一些细节是不够准确的,如 会话密钥并非是直接传给服务端的,这些会在下一个知识点讲到。