博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HTTP和HTTPS的区别?描述HTTPS的工作过程
阅读量:3965 次
发布时间:2019-05-24

本文共 1294 字,大约阅读时间需要 4 分钟。

HTTP(HyperText Transfer Protoco!:超文本传输协议)

超文本的意思就是带超链接的文本,网站地址的格式:http(s)://<主机>:<端口号>/<路径>

HTTP是一个可靠的数据传输协议(依赖于传输层的TCP协议实现)

  • 可以传输文本、文件、图片、音频、视频、动图等
  • 运行在C/S架构上的(客户端和服务端)
  • 传输数据是明文传输

如果要传输一些敏感的信息,如:账号密码,个人信息,账户金额等,用HTTP来传输是不安全的

HTTPS(Secure)是安全的HTTP协议,网站地址格式:http(s)://<主机>:<端口号>/<路径>


HTTP和HTTPS的区别?

  • 1)开销: https通信需要申请证书,证书一般需要向认证机构购买;
  • 2)端口号: http 和 https使用的是不同的连接方式,用的端口也不一样,前者是80,后者是443;
  • 3)资源消耗: https由于需要进行加密和解密,消耗的资源要比http多;
  • 4)安全性: http的连接是无状态的,数据是明文传输;https采用了非对称加密,加密和解密使用不同的秘钥,安全性比http高;

要了解HTTPS的工作流程,首先了解一下什么是对称加密和非对称加密:

  • 对称加密: 加密和解密使用同一个秘钥,这种方式存在的最大问题就是密钥发送问题,即如何安全地将密钥发给对方。
  • 非对称加密: 加密和解密的秘钥不是同一个,分为公钥和私钥;公钥是共享的,私钥是自己使用。
    • 发送方使用公钥加密,接收方通过私钥解密
      由于非对称加密的方式不需要发送用来解密的私钥,所以可以保证安全性;但是和对称加密比起来,它非常的慢,所以我们还是要用对称加密来传送消息,但对称加密所使用的密钥我们可以通过非对称加密的方式发送出去。

HTTPS的工作流程:

  • 1)首先会对443端口进行TCP连接
  • 2)进行SSL安全参数的握手
  • 3)客户端发送数据到服务器,客户端发送数据时会先加密,服务器接收到之后对其解密
  • 4)同样,服务端对数据加密,返回给客户端数据,客户端对其解密

SSL安全参数握手

SSL(Secure Sockets Layer:安全套接层), SSL介于应用层和传输层之间,应用层数据不再直接传递给传输层,而是传递给SSL层,SSL层对从应用层收到的数据进行加密,并增加自己的SSL头。

握手过程如下:

  • 1)从客户端开始,客户端首先生成一个随机数1,然后将这个随机数还有协议版本以及加密算法告诉服务端,这里面的数据是明文发送的
  • 2)服务器对其进行回应,先生成一个随机数,假设为2,同时会提供自己的数字证书,同时对客户端的加密算法进行确定;此时客户端和服务端都同时拥有随机数1、2
  • 3)客户端会确认证书是否有效,然后生成随机数3,使用服务器的公钥加密随机数3(公钥是从证书里取出来的),将加密之后的数据发送给服务端,此时服务端和客户端同时拥有随机数1、2、3
  • 4)然后两者会根据随机数1、2、3和之前约定的算法生成对称秘钥
  • 5)之后就可以使用对称秘钥进行加密通信

双方分别生成秘钥,这个秘钥没有经过传输,也就防止了秘钥被泄露的风险

在这里插入图片描述

转载地址:http://berzi.baihongyu.com/

你可能感兴趣的文章
[心情] 如果有一天
查看>>
[Linux] 常用 linux 系统命令及维护备忘
查看>>
[Linux] 关于 Ext4 HowTo
查看>>
[杂记] 新年物语&关于Mysql引擎性能测试
查看>>
[HTML5] 关于HTML5(WebGL)的那点事
查看>>
自我反思
查看>>
初识网络编程
查看>>
东北赛选拔教训
查看>>
hash
查看>>
涨姿势了:求两个分子的最大公倍数
查看>>
快速幂
查看>>
vector.reserve and resize &&vector与map结合
查看>>
最长公共子序列
查看>>
计算几何
查看>>
求解方程
查看>>
太弱了。。水题
查看>>
位运算(含应用)
查看>>
野指针与空指针
查看>>
图文混排效果
查看>>
urllib2.urlopen超时问题
查看>>