为什么需要HTTPS?

目录

1、HTTP

2、HTTPS

2.1 解决信任问题——证书

2.2 解决明文传输和完整性问题——加密

2.3 HTTPS实现原理


1、HTTP

HTTP:超文本传输协议,是一种常用的应用层协议,它用于传输客户端和服务器端的数据。HTTP具体详见(184条消息) 详谈HTTP协议_不会秃头的小齐的博客-CSDN博客_http地址

HTTP的使用很简单也很方便,但却存在以下3个致命的问题:

1、使用明文通讯,内容可以被监听。(比如前后端交互前开启Fiddler抓包,或者用开发者工具很容易就能获取到传输数据)

2、不验证通讯方的真实身份,可能会遭到伪装,那么我们的数据也很容易就被监听到。(在客户端和服务器端中间有个伪装人)

 3、无法证明报文的完整性,很容易被篡改。

鉴于以上三种问题,所以我们有了HTTPS来替代HTTP。

2、HTTPS

首先来说HTTPS并不是一种新的协议,而是在HTTP协议的基础上添加了加密机制SSL(Secure Socket Layer)或TLS(Transport Layer Security)。

SSL和TLS可以认为是一种东西的两个不同的版本。

HTTPS = HTTP + 加密 + 认证 + 完整性保护

2.1 解决信任问题——证书

HTTPS解决信任问题采用的是数字证书的解决方案,也就是在服务器创建之初,会先向一个大家都认可的第三方平台申请一个可靠的数字证书,然后在客户端访问服务器时,服务器端会先将自己的证书发给客户端,来证明自己是一个可靠的服务器,而非“中间人”。

此时客户端就会对证书进行有效性验证,如果证书有问题,那么客户端会立即中止通讯,如果没问题才会继续执行后续操作。

百度服务器发送到浏览器的证书:

 

2.2 解决明文传输和完整性问题——加密

加密主要分为两大类:

①对称加密,在对称加密中,有一个共享密钥,通过这把共享密钥可以实现信息的加密和解密,它的特点是加密和解密的速度很快,但因为共享密钥的问题,一旦共享密钥被截获,那么所谓的加密和解密也就是一纸空谈了。

②非对称加密,有一对密钥:公钥和私钥,使用公钥可以加密信息,但不能解密信息,使用私钥可以解密信息。它的特点是服务器端保存私钥,不对外暴露,只将公钥发送给客户端,而其他人就算截获了公钥,也无法解密信息,所以此方式更安全,但非对称加密的执行速度比较慢。

HTTPS中用了哪种加密方式呢?

使用对称加密,速度快,但不安全;使用非对称加密,安全但速度慢,所以为了既安全又相对高效,HTTPS中两种加密方式都用到了。

2.3 HTTPS实现原理

实现过程概述:

①浏览器通过HTTPS协议访问服务器;

②服务器端收到HTTPS请求,使用非对称加密,准备一把公钥,一把私钥,此时将自己的证书和公钥发送给浏览器;

③浏览器接收到服务器端发来的信息后,先验证证书是否有效,若有效,则进行下一步:使用对称加密,用共享密钥对数据进行加密,然后再用公钥对共享密钥进行加密,然后将加密的数据和加密的共享密钥发送给服务器端;

④服务器端收到信息后,用保留在服务器端的私钥进行解密拿出共享密钥,再用共享密钥打开数据,获取数据信息;

⑤由于现在客户端和服务器端都有了一把共享密钥,所以以后进行数据传输就不需要用公钥和私钥了(之所以怕数据被截获,主要是钥匙的传输过程不安全),直接用各自的共享密钥进行数据的加密解密。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值