这篇文章主要讲解了“https的基本原理”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“https的基本原理”吧!
随着谷歌浏览器对https证书的大力推行,几乎所有大型网站都部署了https证书,我们在开发时,也时常会用到https,比如开发微信小程序,微信官方要求小程序内部发送异步请求必须是https协议。
https好处多多,用https协议传输信息,信息的安全性会得到保障,用http传递信息几乎等于裸奔了,如图所示:
https在传输信息的时候是需要对信息进行加密的。https用到的加密方式有两种,分别是对称加密和非对称加密,首先咱们看一下对称加密的图解:
对称加密有个特点,端点两端的秘钥是一样的,不能被第三方知道。
但是大家仔细观察,对称加密有个缺点,那就是就是秘钥如何交换。这句话的意思是指,客户端如何把秘钥交给服务端,或者服务端如何把秘钥交给客户端,但是不能被第三方知道,因为第三方也得到了这个秘钥,那么信息就不安全了。
因为只有客户端和服务端都知道秘钥才能实现加密解密,如果只有客户端或者只有服务端其中一方持有秘钥,是不能完成加密解密整个过程的。
那么这个问题如何解决呢?先搁置一边,下面看一下非对称加密。
非对称加密需要两把不同的秘钥,这点和对称加密不同,分别是一把私钥,一把公钥,并且这两把钥匙是配对的。公钥私钥有如下几个特性:
1、公钥加密必须使用与其匹配的私钥才能解密
2、私钥加密必须使用与其匹配的公钥才能解密
3、私钥必须严格保密,不能泄露,非对称加密建立在私钥严格保密的基础上。
4、公钥可以随意分发给任何人。
非对称加密相较于对称加密,主要的作用是弥补了对称加密秘钥分发的问题。
我们用一张图来演示一下非对称加密:
从图中我们可以看到,非对称加密的公钥可以随意分发给任何人,私钥必须自己保存,不能交给别人,在信息进行交互的时候,我们只要用公钥加密私钥解密,或者私钥加密公钥解密即可。
上面的方案看上去很美,但是有两个非常大的漏洞无法解决:
1、公私钥加密解密是非常耗时的,而web的用户体验不允许我们直接使用公私钥加密
2、公钥的分发是个问题,假如服务器端将公钥作为响应发送给客户端,但是这个过程被一个中间人劫持了,然后中间人假装服务器,给客户端发送了一个假的公钥,客户端并不知道中间人的存在,使用假的公钥加密信息,中间人拿到后用和假公钥匹配的私钥解密,信息就泄露了,过程如图:
观察图中的中间人,中间人劫持了真的公钥,自己生成一对公私钥,用这对公私钥和客户端沟通交流,完全以假乱真。
我们可以将对称加密和非对称加密结合起来使用,用非对称加密方式来交换对称加密用的秘钥,然后用对称加密的秘钥来加密交互信息。
这里还有一点大家需要注意,https的加密必须借助第三方来实现,也就是CA证书,为什么需要这个东西呢?
因为我们将公钥分发出去的时候为了防止被中间人替换或者窃取,需要对公钥做特殊处理,这个特殊处理通常就是加密,但是加密后,加密的秘钥如何给到客户端呢?这就形成了一个无限的死循环,所以需要引入第三方机构,CA证书机构。
大家的操作系统和浏览器都内置了各大权威证书的公钥也就是CA的公钥,简而言之就是我们的操作系统内置CA的公钥,我们要做的就是去这些机构申请我们的公钥证书,这个证书是被和CA的公钥匹配的CA私钥加密过的。
当客户端和服务器端进行通信的时候,服务器端将公钥证书发送给客户端,客户端拿到证书,用系统和浏览器内置的权威CA公钥解密验证证书,得到服务器的公钥。
然后用服务器公钥加密对称秘钥发送到服务器端,服务器用服务器自己的私钥解密得到对称秘钥,这样就可以用对称秘钥进行数据交换了。
流程图如下:
仔细观察上面这张图:
第一步、客户端发送请求,服务器将证书发送给客户端,证书的本质是第三方CA的私钥加密的内容,其内容是服务器的公钥。
第二步、客户端接收到证书后,用操作系统和浏览器内置的CA公钥去匹配验证证书,如果能解密,说明网站安全
第三步、用CA公钥解密证书,并将服务器公钥解密出来。到这一步,客户端安全的拿到了服务器端的公钥。
第四步、生成随机数,用服务器公钥加密随机数发送到服务器端。
第五步、服务器端用服务器私钥解密信息,得到随机数
剩下的步骤,客户端和服务器端都有了相同的随机数,也就是有了相同的对称秘钥,就可以安全通信了。
感谢各位的阅读,以上就是“https的基本原理”的内容了,经过本文的学习后,相信大家对https的基本原理这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。