【面试必问】HTTP与HTTPS的区别以及HTTPS的工作流程

一、HTTP与HTTPS的区别

  1. HTTP是超文本传输协议,信息是明文传输,存在安全风险问题。HTTPS则解决不安全缺陷,在TCP和HTTP网络层之间加入了SSL/TLS协议,使得报文能够加密传输。
  2. HTTP连接建立相对简单,TCP三次握手之后便可进行HTTP的报文传输。而HTTPS在TCP三次握手之后,还需要进行SSL/TLS的握手过程。才可进入加密报文传输。
  3. HTTP的端口号是80,HTTPS的端口号是443。
  4. HTTPS协议需要向CA(证书权威机构)申请数字证书,来保证服务器的身份是可信的。

二、为什么要用HTTPS?解决了哪些问题?

因为HTTP是明文传输,存在安全上的风险:

三、HTTPS工作流程是怎样的?

  1. 客户端发起HTTPS请求,连接到服务器端的443端口。
  2. 服务端有一套数字证书(证书内容有公钥、证书颁发机构、失效日期等)。
  3. 服务器端将自己的数字证书发送给客户端(公钥在证书里面,私钥由服务器持有)。
  4. 客户端收到数字证书后,会验证证书的合法性。如果证书验证通过,就会生成一个随机的对称密钥,用证书的公钥加密。
  5. 客户端将用公钥加密后的密钥发送到服务器。
  6. 服务器接收到客户端发来的密文密钥之后,用自己之前保留的私钥对其进行非对称解密,解密之后就得到客户端的密钥,然后用客户端密钥对返回数据进行对称加密,这样子传输的数据都是密文。
  7. 服务器将加密后的密文返回到客户端。
  8. 客户端收到后,用自己的密钥对其进行对称解密,得到服务器返回的数据。
经验分享 程序员 微信小程序 职场和发展