https

https

https就是安全版本的http,譬如一些支付等操作基本都是基于https的,因为http请求的安全系数太低了。

简单来看,https与http的区别就是: 在请求前,会建立ssl链接,确保接下来的通信都是加密的,无法被轻易截取分析

一般来说,如果要将网站升级成https,需要后端支持(后端需要申请证书等),然后https的开销也比http要大(因为需要额外建立安全链接以及加密等),所以一般来说http2.0配合https的体验更佳(因为http2.0更快了)

一般来说,主要关注的就是SSL/TLS的握手流程,如下(简述):

  1. 浏览器请求建立SSL链接,并向服务端发送一个随机数–Client random和客户端支持的加密方法,比如RSA加密,此时是明文传输。

  2. 服务端从中选出一组加密算法与Hash算法,回复一个随机数–Server random,并将自己的身份信息以证书的形式发回给浏览器 (证书里包含了网站地址,非对称加密的公钥,以及证书颁发机构等信息)

  3. 浏览器收到服务端的证书后

  • 验证证书的合法性(颁发机构是否合法,证书中包含的网址是否和正在访问的一样),如果证书信任,则浏览器会显示一个小锁头,否则会有提示

  • 用户接收证书后(不管信不信任),浏览会生产新的随机数–Premaster secret,然后证书中的公钥以及指定的加密方法加密 Premastersecret,发送给服务器。

  • 利用Client random、Server random和Premaster secret通过一定的算法生成HTTP链接数据传输的对称加密key- session key

  • 使用约定好的HASH算法计算握手消息,并使用生成的 session key对消息进行加密,最后将之前生成的所有信息发送给服务端。

服务端收到浏览器的回复

  • 利用已知的加解密方式与自己的私钥进行解密,获取 Premastersecret

  • 和浏览器相同规则生成 session key

  • 使用 session key解密浏览器发来的握手消息,并验证Hash是否与浏览器发来的一致

  • 使用 session key加密一段握手消息,发送给浏览器

浏览器解密并计算握手消息的HASH,如果与服务端发来的HASH一致,此时握手过程结束,

之后所有的https通信数据将由之前浏览器生成的 session key并利用对称加密算法进行加密。

这里放一张图(来源:阮一峰-图解SSL/TLS协议):

 

转载于:https://www.cnblogs.com/xuanbingbingo/p/8694412.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值