Https讲解(这一篇就够了)

我们要知道,http存在的不足。才能值到https出现的原因

1.使用明文,没有加密,可能会被窃听

互联网上任何地方都可以窃听

2.不知道对方的身份

http协议谁都可以发起请求,也就是说,有可能是伪装的客户端。当然服务器也可以伪装,那你就不知道你要发送到的那台服务器是不是你想要的。

3.无法证明报文的完整性,就是可能在传递的过程中被修改了。(不是报文的内容可以通过md5转换来验证报文的完整性吗?你想想,既然报文内容都可修改,那md5的内容同样可以修改)


https=http+加密+认证+完整性保护

怎么做?在http和tcp中间加上ssl层就可以了。也就是在http基础上加了一项技术。

我们要先了解一下共享秘钥加密。

所谓的共享,就是大家加密和解密都是用同一把钥匙。我加密完后,内容要发给你,钥匙也要发给你。那攻击者可能就会把内容和钥匙都获取到,这就失去了意义。

当然共享秘钥加密不是完全没有意义的。前提是你能把钥匙安全地交到对方的手中。

公开秘钥加密会完美地解决这个问题。SLL也是采用这种加密方式。

共享秘钥加密是对称的加密。那我不对称就好了。如果我要你发消息给我。我要做:

1.生成一套公开秘钥和私有秘钥,私有秘钥不能给别人,而公开秘钥可以交给任何人。

2.把公开秘钥交给要发消息给我的人。

3.用对方发给我的公开秘钥对内容加密。并发送

4.我收到加密的内容,用自己的私有秘钥解密。即拿到内容。

但这种加密方式需要耗费cup内存通信等资源,我们可以和共享秘钥结合,比如,把共享秘钥的钥匙通过公开秘钥安全地交到对方手中,那之后就可以通过共享秘钥的方式来进行交流。

公开秘钥加密也有一个缺点,那就是我不知道拿到的公开秘钥是谁的,如果在没有验证的情况下,用不知道谁的公开秘钥进行加密,那就会把内容交给给我公开秘钥的人。我不知道是谁。

这种情况下可以用大家都值得信赖第三方机构。

这机构的存在就是来证明公开秘钥的所属性。通过这个机构,我可以确认,这个公开秘钥就是他的没错。

 具体步骤

1.服务器把自己的公开秘钥给认证机构。

2.认证机构用自己的私有秘钥解密,向服务器的公开秘钥部署数字签名。并向服务器颁布证书。

3.客户端拿到服务器的证书后,使用机构的公开秘钥解密(已事先在浏览器中)。可以获得服务器的公开秘钥,和机构的数组签名。

4.用这个公开秘钥加密后,发给服务器

5.服务器用自己的私有秘钥解密。

最后我们要知道,https很慢,需要安全性高的网站才需要。

发布了82 篇原创文章 · 获赞 49 · 访问量 12万+

猜你喜欢

转载自blog.csdn.net/xu505928168/article/details/98588711