http 与 https 的区别?https 是如何工作的?
http 是超文本传输协议,而 https 可以简单理解为安全的 http 协议。https 通过在 http 协议下添加了一层 ssl 协议对数据进行加密从而保证了安全。https 的作用主要有两点:建立安全的信息传输通道,保证数据传输安全;确认网站的真实性。
http 与 https 的区别主要如下:
- https 需要到 CA 申请证书,很少免费,因而需要一定的费用
- http 是明文传输,安全性低;而 https 在 http 的基础上通过 ssl 加密,安全性高
- 二者的默认端口不一样,http 使用的默认端口是80;https使用的默认端口是 443
https 的工作流程
提到 https 的话首先要说到加密算法,加密算法分为两类:对称加密和非对称加密。
- 对称加密: 加密和解密用的都是相同的秘钥,优点是速度快,缺点是安全性低。常见的对称加密算法有 DES、AES 等等。
- 非对称加密: 非对称加密有一个秘钥对,分为公钥和私钥。一般来说,私钥自己持有,公钥可以公开给对方,优点是安全性比对称加密高,缺点是数据传输效率比对称加密低。采用公钥加密的信息只有对应的私钥可以解密。常见的非对称加密包括RSA等。
在正式的使用场景中一般都是对称加密和非对称加密结合使用,使用非对称加密完成秘钥的传递,然后使用对称秘钥进行数据加密和解密。二者结合既保证了安全性,又提高了数据传输效率。
https 的具体流程如下:
1.客户端(通常是浏览器)先向服务器发出加密通信的请求
- 支持的协议版本,比如 TLS 1.0版
- 一个客户端生成的随机数 random1,稍后用于生成”对话密钥”
- 支持的加密方法,比如 RSA 公钥加密
- 支持的压缩方法
2.服务器收到请求,然后响应
- 确认使用的加密通信协议版本,比如 TLS 1.0版本。如果浏览器与服务器支持的版本不一致,服务器关闭加密通信
- 一个服务器生成的随机数 random2,稍后用于生成”对话密钥”
- 确认使用的加密方法,比如 RSA 公钥加密
- 服务器证书
3.客户端收到证书之后会首先会进行验证
- 首先验证证书的安全性
- 验证通过之后,客户端会生成一个随机数 pre-master secret,然后使用证书中的公钥进行加密,然后传递给服务器端
4.服务器收到使用公钥加密的内容,在服务器端使用私钥解密之后获得随机数 pre-master secret
- 根据 radom1、radom2、pre-master secret 通过一定的算法得出一个对称加密的秘钥,作为后面交互过程中使用对称秘钥。同时客户端也会使用 radom1、radom2、pre-master secret,和同样的算法生成对称秘钥。
5.然后再后续的交互中就使用上一步生成的对称秘钥对传输的内容进行加密和解密。