http加密解密流程

1、 客户端发起https请求

  • 用户在浏览器里输入一个HTTPS网址,然后连接到服务器的443端口。

2、 服务端的配置

  • 采用HTTPS协议的服务器必须要有一套数字证书,可以自己制作,也可以向组织申请。区别就是自己颁发的证书需要客户端验证通过,才可以继续访问,而使用受信任的公司申请的证书则不会弹出提示页面。这套证书其实就是一对公钥和私钥。如果对公钥不太理解,可以想象成一把钥匙和一个锁头,只是世界上只有你一个人有这把钥匙,你可以把锁头给别人,别人可以用这个锁把重要的东西锁起来,然后发给你,因为只有你一个人有这把钥匙,所以只有你才能看到被这把锁锁起来的东西。

3、 传送证书

  • 公钥,包含很多信息,如证书的颁发机构、过期时间等

4、 客户端解析证书

  • 客户端的SSL/TLS来完成,首先会验证公钥是否有效,比如颁发机构,过期时间
  • 发现异常,弹出一个警示框,提示证书存在的问题
  • 证书没有问题,就生成一个随机值。然后用证书(就是公钥)对随机值进行加密

5、 传送加密信息

  • 传送的就是用证书加密后的随机值,目的是让服务器得到这个随机值,以后客户端和服务器的通信就可以通过这个给随机值来进行加密解密了

6、 服务端解密信息

  • 服务器用私钥解密后,得到客户端传过来的随机值,然后把内容通过该随机值进行对称加密,将信息和私钥通过某种算法混合在一起
  • 除非知道私钥,不然无法获取内容,而正好客户端和服务器都知道这个私钥
  • 所以只要加密算法够彪悍,私钥够复杂,数据就够安全

7、 传输加密后的信息

  • 服务器端用私钥加密后的信息,可以在客户端用随机值解密还原

8、 客户端解密信息

  • 客户端用之前生产的私钥解密服务端传过来的信息,于是获取了解密后的内容
  • 整个过程第三方即使监听到了数据,也束手无策

版权声明:本文为hannah2233原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。