HTTP与HTTPS的区别以及HTTPS的工作流程
一、HTTP与HTTPS的区别
- HTTP是超文本传输协议,信息是明文传输,存在安全风险问题。HTTPS则解决不安全缺陷,在TCP和HTTP网络层之间加入了SSL/TLS协议,使得报文能够加密传输。
- HTTP连接建立相对简单,TCP三次握手之后便可进行HTTP的报文传输。而HTTPS在TCP三次握手之后,还需要进行SSL/TLS的握手过程。才可进入加密报文传输。
- HTTP的端口号是80,HTTPS的端口号是443。
- HTTPS协议需要向CA(证书权威机构)申请数字证书,来保证服务器的身份是可信的。
二、为什么要用HTTPS?解决了哪些问题?
因为HTTP是明文传输,存在安全上的风险:
- 窃听风险,比如通信链路上可以获取通信内容,用户账号被盗。
- 篡改风险,比如强制植入垃圾广告,视觉污染。
- 冒充风险,比如冒充淘宝网站,用户金钱损失。
所以引入了HTTPS,HTTPS在与TCP层之间加了SSL/TLS协议,可以很好解决这些风险: - 信息加密:交互信息无法被窃取。
- 校验机制:无法篡改通信内容,篡改了就不能正常显示。
- 身份证书:能证明淘宝是真淘宝。
三、HTTPS工作流程是怎样的?
- 客户端发起HTTPS请求,连接到服务器端的443端口。
- 服务端有一套数字证书(证书内容有公钥、证书颁发机构、失效日期等)。
- 服务器端将自己的数字证书发送给客户端(公钥在证书里面,私钥由服务器持有)。
- 客户端收到数字证书后,会验证证书的合法性。如果证书验证通过,就会生成一个随机的对称密钥,用证书的公钥加密。
- 客户端将用公钥加密后的密钥发送到服务器。
- 服务器接收到客户端发来的密文密钥之后,用自己之前保留的私钥对其进行非对称解密,解密之后就得到客户端的密钥,然后用客户端密钥对返回数据进行对称加密,这样子传输的数据都是密文。
- 服务器将加密后的密文返回到客户端。
- 客户端收到后,用自己的密钥对其进行对称解密,得到服务器返回的数据。
|