本文共 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/