https请求流程

1,935 阅读3分钟

这是我参与8月更文挑战的第2天,活动详情查看:8月更文挑战

产生背景

说到https,不得不提到http

什么是http

超文本传输协议,是一个基于请求与响应,无状态的,应用层的协议,常基于TCP/IP协议传输数据,互联网上应用最为广泛的一种网络协议,所有的WWW文件都必须遵守这个标准。设计HTTP的初衷是为了提供一种发布和接收HTML页面的方法。

什么是https

https是身披SSL外壳的http。是一种通过计算机网络进行安全通信的传输协议,经由http进行通信,利用SSL/TLS建立全信通,加密数据包。主要的目的https是解决http网络请求中数据被篡改的问题,保护数据的隐私和完整性。

http的缺点

客户端通过http请求服务器,中间经过很多中间商,例如路由器,局域网,网络运营商,而http请求又是明文传输的,所以中间任何一步都能捕获传输信息,并进行篡改。

https解决了http的什么问题

https解决了http请求中传输信息被篡改的问题,因为https内容传输,全部是密文,即使被拦截,篡改也没用。

image.png

https涉及到的概念

证书机构(CA)、数字证书、公钥、私钥、对称加密和非对称加密。下面我们就看一下每一个在https请求中的作用。

证书机构(CA)

数字证书、私钥、公钥的生成机构,我们将域名改为https之前,需要将域名和持有者信息提交给该机构,该机构生成数字证书、私钥、公钥。

数字证书

数字证书是由权威的CA机构颁发的,证书的主要内容有:公钥、颁发机构、证书持有者信息、证书有效期、签名算法、指纹和指纹算法

非对称加密

非对称加密,又称为公开密钥加密,是为了解决对称加密中的安全问题而诞生,一个称为公开密钥(public key),即公钥,另一个称为私钥(private key),即私钥。但是它的加密速度相对于对称加密来说很慢。

  • 公钥是对外开放的,私钥是自己拥有的,存到自己服务器
  • 公钥加密的数据,只能用私钥解密
  • 私钥加密的数据,只能用公钥解密

对称加密

对称加密是指双方持有相同的秘钥,算法是公开的,用相同的秘钥加密解密,速度快

https加密方式的选择

https的加密方式是非对称加密和对称加密两者相结合的方式使用的,用非对称加密生成对称加密共同的秘钥,然后用对称加密传输数据。

https请求流程

image.png

1、客户端发起请求,例如在浏览器输入https://www/baidu.com,请求服务器443端口

2、服务器收到请求后将数字证书和公钥返给客户端

3、客户端收到证书和公钥之后,请求证书生成机构,验证证书有效性,主要验证:

  • 证书是否过期
  • 发行证书的机构是否可靠
  • 返回的公钥是否能正确解开返回证书中的数字签名
  • 证书域名和请求的域名是否匹配

4、证书无效浏览器提示证书验证不通过,风险提示。
证书有效,客户端生成一个随机秘钥

5、客户端将生成的随机秘钥,通过上面的公钥加密,发给服务器

6、服务器收到客户端用公钥加密过的随机秘钥之后,用私钥解密出秘钥

7、服务器用解出来的客户端秘钥,将要响应的内容用秘钥对称加密,响应给客户端

8、客户端将得到的内容,用刚刚自己生成的秘钥解密出内容