HTTP与HTTPS
发布日期:2021-05-07 23:09:06 浏览次数:29 分类:精选文章

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

http存在的问题?

1.http都是明文传输的,在传输过程报文可能会被拦截查看和篡改

http正常给服务器发送一个消息

消息在中间传递传递的过程中可能被黑客拦截篡改,修改发送的信息

解决:可以使用加密的方法解决上面的问题

加密

 对称加密:产生一个秘钥,客户端或服务器通过秘钥进行加密和解密

存在问题:秘钥可能会被黑客得到,然后对报文进行篡改,这个秘钥是公开的

 服务器给客户端先发来一个秘钥,客户端通过这个秘钥对报文进行加密,服务器拿到报文后用秘钥进行解密

在这个过程中如果秘钥被黑客拿到,当黑客拦截你的消息是可以通过秘钥进行解密和重新加密,进而进行篡改

 

解决:为了防止上面的问题,可以使用非对称加密,只公开公钥,公钥加密,秘钥解密,当黑客拿到公钥时,也无法对报文进行解密

 非对称加密:产生一对秘钥,一个公钥一个私钥,通常通过公钥加密秘钥解密

公钥公开,秘钥不公开

存在问题:公钥可以被所有人拿到,黑客可以利用拿到公钥,对公钥重新伪造,客户端用假的公钥对自己的秘钥进行加密,这样黑客就可以医用假的私钥对这个秘钥解密,得到秘钥,进而拦截数据和篡改数据,客户端无法知道真正的公钥是什么,无法确定真正的服务器是谁

 首先,服务器会给客户端一个公钥key1,客户端拿到公钥会,会使用公钥对报文进行加密,服务器拿到报文后通过秘钥key1可以进行解密

 但此时会存在一个问题,服务器发给客户端的报文,客户端无法进行解密

这时就需要再需要一个秘钥,两方通过这个秘钥进行传输,当客户端拿到公钥之后,会给服务器发一个秘钥key2(通过公钥key1加密的),服务器拿到这个秘钥后,两边之后通过这个秘钥进行通信

 

但是之前的公钥可能,黑客拦截到公钥key1,然后给客户端返回一个假的公钥key3

客户端用个这假的公钥key3对秘钥key2进行加密,黑客可以拿到这个key2,使用公钥key1key2加密发给服务器

这样黑客就有了秘钥key2,由于最终通信是依靠这个秘钥,因此黑客可以对消息进行查看和篡改

 

解决:就需要一个第三方对公钥进行加密,使其不能被篡改伪造

CA认证

证书颁发流程:服务器将自己的公钥交给CA认证机构,机构用自己的秘钥给这个公钥进行加密,并部署数字签名和颁发公钥证书,将自己的公钥植入到所有的浏览器中

证书:有域名,证书颁发机构,证书签名(加密之后),公钥(加密之后)

服务器公钥和证书签名都是通过第三方加密的,通过CA的公钥解密读取,无法进行加密伪造

数字签名:域名+CA公钥+服务器公钥

 

https传输过程

1.服务器先给客户端发回一个公钥证书(服务器公钥加证书签名),客户端拿到证书和签名后,使用CA公钥进行解密,然后验证签名,验证服务器身份

黑客可以拦截并查看证书,但不能篡改里面的公钥和证书签名,只能修改域名等其他信息,当客户端验证签名就会出错,会自动断开连接

2.后面就和之前一样了,可以正常通信了

黑客可以截取数据,但不能对数据进行查看和篡改

https解决的问题就是,通过非对称加密对秘钥进行加密和解密,用加密后的秘钥利用对称加密进行传输,并用ca认证的方式保证服务器公钥不被篡改,保证客户端数据发送到真正的浏览器

无论是http还是https,数据都有可能被拦截,但https保证了数据不能被篡改和查看

 

上一篇:手动搭建一个https服务器,并颁发证书
下一篇:前端常用设计模式

发表评论

最新留言

表示我来过!
[***.240.166.169]2025年04月13日 23时30分56秒