基本认识
https,简单的来说其实就是http的一种扩展版本,它不是一种新的协议。在我看来,https是基于http协议和其他协议一起使用的复用技术,其最终目的是为了保证数据通输的安全
在这里得要说一下http的一些缺点
虽然说http在传输数据的速率上非常高,但是这个“高”是付出了一定的代价,而这些代价就造成了http的缺陷
1. http通信使用明文可能会被窃听
2. 无法验证通信双方的身份,这样就有可能遭到中间人攻击
3. 无法证明报文完整性,说白了就是我们无法保证我们所接收到的数据是来自客户端发送过来的,有可能是敌手截取报文修改了报文数据再发送给我们的。并且我们接收方不知道该报文是否完成或被篡改过
总而言之,就是http不安全(通信双方的身份无法得到保证,报文传输的安全无法得到保证)
而https正是因为http上述的一些缺陷而产生的。可以用下面的一个等式来简单描述两者之间的关系
https = http + ssl
ssl(Secure Sockets Layers,安全套接层)是为网络通信提供安全及数据完整性的一种安全协议
该协议所能提供的服务如下
1. 认证用户和服务端,能确认双方通信者的身份
2. 加密数据以防止数据中途被窃取
3. 维护数据的完整性,确保数据再传输过程中不被改变
ssl所提供的每一个服务都恰好一一对应我刚刚上面讲的http缺点,因此http + ssl 就能够实现数据的安全通信
当然,其实这里还有一种对https的理解
https = http + 加密 + 认证 + 完整性保护
加密,是使用密码学的各种加密技术,例如常见的RSA,MD5...来对报文所要传输的数据进行加密。这样就能保证数据在传输过程中能不被第三方所获取到了
认证,是对双方通信身份的认证,在这里一般是使用CA证书来对双方通信的身份进行证明。这样就能验证通信双方身份的真实性。
完整性保护,是对报文在传输过程中,对报文本身的一种保护,保护报文不会被破环。
这样看来,这种对https的理解也是没有错误的
https的通信过程
https的通信过程比http的通信过程要复杂许多。我们可以将https的通信过程分为以下阶段
- ssl通信
- http通信
1. ssl通信过程
ssl通信过程的目的是为了能让发送端和接收端进行密钥交换。这样客户端将内容用密钥进行加密,然后服务端用密钥进行解密,这样就能保护数据。
具体过程下图如下
在ssl通信过程中,实现了以下目的
- 客户端识别了服务端的身份(通过公钥证书获得)
- 客户端与服务端交换了后面通信会使用的密钥
- 为后期的http通信建立了ssl保护,保护后面数据传输的安全
2. http通信过程
关于http通信的具体过程可以参考该文章:网络基础 HTTP的通信过程
注:在https通信的http通信过程中,它在发送数据时会附加一种叫做mac的报文摘要。MAC能够查知报文是否遭到篡改,从而保护报文的完整性
https vs http
https因为上述的机制而会使得数据通信变得十分的安全。但是也会因为这些机制而带来缺陷
- 传输速率相较于http慢2到100倍
- ssl所使用的证书是需要到专门的认证机构购买的,是需要钱的
所以说,https并不是没有缺点的。
在这里,我想阐述的是http和https各有各的优点和缺点,我们不能说http比http或者说https比http好。它们各自有各自的使用范围
在这里我做了一个http和https的一个总结
协议名称 | 优点 | 缺点 | 使用范围 | 例子 |
---|---|---|---|---|
http | 数据传输速率快,成本较低 | 数据传输不安全 | 1. 数据安全性要求不高 2. 要求传输速率快 3. 经费有限 | 公开网站 |
https | 数据传输安全 | 数据传输速率慢,成本比http要高一点 | 1. 数据安全性要求高 2. 要求传输速率快 3. 经费充足 | 支付/隐私信息填写/等… |
我们什么时候使用http,什么时候使用https,还应视情况而定
结束!!!