小张和https

解决http出现的问题

http存在的三个弊端:

  • 无法保证消息的保密性(http明文传输)
  • 无法保证消息的完整性和准确性(可能被篡改)
  • 无法保证消息来源的可靠性(不检验双方身份)

什么是https

https=http+加密+认证+完整性保护

SSL协议(Secure Sockets Layer)(Application Layer)

加强版TCP

HTTPs是HTTP报文直接将报文信息传输给SSL套接字进行加密,SSL加密后的报文发送给TCP套接字,然后TCP套接字再将加密后的报文发送给目的主机,目的主机将通过TCP套接字获取加密后的报文发给SSL套接字,SSL解密后交给对方进程
在这里插入图片描述

对称加密(共享密钥加密)

- server和client公用一个密钥用来对消息加解密
- server和client约定好一个加密的密钥
- client在发消息之前用该密钥对消息加密,发送给服务器后,服务器在用该密钥解密拿到信息

对称加密的优点:

  • 对称加密解决了http中消息保密性的问题

对称加密的缺点:

  • 虽然保证了消息保密性,但是因为客服端和服务器共享一个密钥,这样就使得密钥特别容易泄露
  • 由于容易泄露,很难保证消息来源的可靠性、消息的完整性、准确性

非对称加密(公有密钥加密)

- client和server都拥有一个公共密钥和私有密钥。
- 公有密钥可以i对外可见,私有密钥仅自己可见
- 使用公有密钥加密的消息,只有对应的私钥才能解开,反过来,使用私有密钥加密的消息,也只有对应公钥才能解开。
- client发送消息之前,先用server的公钥对消息进行加密,server收到后再用自己的私钥进行解密

非对称加密的优点:

  • 解决了http中消息保密性的问题,而使得私有密钥泄露的风险降低
  • 保证了消息来源和准确与完整

非对称加密的缺点:

  • 非对称加密需要使用接收方的公钥对信息进行加密,但公钥对外可见,任何人包括中间人都可以拿到,第一件事中间人可以在client和server之间交换公钥时,将client的公钥替换成自己的,这样server拿到的公钥不是client的,而是server的,导致无法判断来源
  • 中间人可以不替换公钥,可以截取client发来的消息,然后篡改,再用client的公钥加密再发往server,篡改消息内容
  • 非对称加密的速度很慢,比较消耗系统资源

数字证书与数字签名

为了解决非对称加密中公钥来源的不安全性

  1. server向CA(Certificate Authority)认证中心申请数字证书

     - server生成一对密钥,拿着公钥以及企业名称这种其他信息去CA申请数字证书
     - CA拿到信息后,会选择一种单向Hash算法(特点:单向不可逆,只要原始内容有一点变化,加密后的数据都千差万别),对信息进行加密,加密之后我们将它称之为摘要
     - CA用自己的私钥对摘要进行加密,加密后的数据我们称之为数字签名
     - CA将我们的申请信息和数字签名整合在一起,生成数字证书,然后CA将数字证书传递给我们
    

在这里插入图片描述

  1. 数字证书起作用的过程

     - server获取到了数字证书,将数字证书发给client,client需要用CA的公钥解密数字证书并验证数字证书的合法性
     - CA公钥获得:电脑和浏览器中已经内置了一部分权威机构的根证书,这些根证书中包含了CA的公钥
     - client用CA的公钥解密数字证书,如果解密成功则说明证书来源于合法的认证机构,解密成功后,client拿到了摘要
     - client会按照CA一样的hash算法将申请信息生成一份摘要,和解密出来的做对比,内容相同则说明没有被篡改
     - client拿到了server的公钥,就可以和服务器进行安全的非对称加密通信了
    

在这里插入图片描述

HTTPS建立

https建立的过程:

  1. client通过发送Client Hello开始SSL通信。报文中包含client支持的SSL的指定版本、加密组件(Cipher Suite)列表(包含使用的加密算法和密钥长度等)
  2. server可进行SSL通信时,会以Server Hello报文作为报答。与client相同,报文中会包含SSL版本和加密组件(但这个加密组件是server经过client的加密组件筛选后的)
  3. server发送证书报文,报文中包含公开密钥证书(跟CA申请得到的那个数字证书)
  4. server发送Server Hello Done通知client,最初阶段的SSL握手协商部分结束
  5. SSL第一次握手结束后,client发送Client Key Exchange报文作为回应。报文中包含通信加密中使用的一种被成为Pre-master secret的随机密码串,这次的报文已经开始用server的公钥进行加密了
  6. client继续发送Change Cipher Spec报文,意思是提示server,之后的报文通信会用Pre-master secret密钥进行加密
  7. server发送Finished报文,包含连接至今全部报文的整体校验值,这次握手协商是否能够成功,要以服务器是否能够正确解密该报文作为判定标准
  8. server同样发送Change Cipher Spec报文
  9. server同样发送Finished报文
  10. server和client的报文交换完毕后,SSL连接就算建立完成。
  11. 应用层协议通信,开始发送HTTP请求和响应

在这里插入图片描述

HTTPS的四次握手

  1. 客户端发出请求(Client Hello):client向server发起加密通信的请求
  2. 服务器回应(Server Hello):server收到client请求后,确认SSL版本是否一致,一致则返回server证书,不一致就关闭通信
  3. 客户端回应:client收到server回应后,client验证server的证书是否有效。如果证书失效,会给用户提示,由用户决定是否继续连接。如果有效,则使用证书中的公钥加密一个随机数(pre-master key)返回给server,同时返回server握手结束finished
  4. 服务器回应:server收到pre-master key之后,计算生成本次会话的密钥,向client发送finished结束通知

https使用

  • 适用于安全性需要比较高的场景,银行、购物等。
  • 虽然消息安全传输,但消息加解密非常耗时,占用系统资源,所以安全性不高不用使用
  • https需要数字证书,价格不菲,对安全性要求不高也没必要使用。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值