🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] 参考链接:[https://mp.weixin.qq.com/s?\_\_biz=MzA4MTg4MDI5OQ==&mid=2456039491&idx=1&sn=63b44659eeead9c4a656c898e6a29cce&chksm=881ea5c7bf692cd1ba9bdc9eadf5a66d95a194743d3224812899f403d2e1321c978879fa470f&scene=21#wechat\_redirect](https://mp.weixin.qq.com/s?__biz=MzA4MTg4MDI5OQ==&mid=2456039491&idx=1&sn=63b44659eeead9c4a656c898e6a29cce&chksm=881ea5c7bf692cd1ba9bdc9eadf5a66d95a194743d3224812899f403d2e1321c978879fa470f&scene=21#wechat_redirect) ## **什么是https** https好处多多,用https协议传输信息,信息的安全性会得到保障,用http传递信息几乎等于裸奔了,如图所示: ![tloJVs.png](https://s1.ax1x.com/2020/05/31/tloJVs.png) https在传输信息的时候是需要对信息进行加密的。https用到的加密方式有两种,分别是对称加密和非对称加密。对称加密的图解: ![](https://img.kancloud.cn/14/09/14097e838d8fa6de70a5b4072606d444_680x214.png) ### **对称加密** 对称加密有个特点,端点两端的秘钥是一样的,不能被第三方知道。 ` ` 但是大家仔细观察,对称加密有个缺点,那就是就是**秘钥如何交换**。这句话的意思是指,客户端如何把秘钥交给服务端,或者服务端如何把秘钥交给客户端,但是不能被第三方知道,因为第三方也得到了这个秘钥,那么信息就不安全了。 ` ` 因为只有客户端和服务端都知道秘钥才能实现加密解密,如果只有客户端或者只有服务端其中一方持有秘钥,是不能完成加密解密整个过程的。 ### **非对称加密** 非对称加密需要两把不同的秘钥,这点和对称加密不同,分别是一把私钥,一把公钥,并且这两把钥匙是配对的。公钥私钥有如下几个特性: * 1、公钥加密必须使用与其匹配的私钥才能解密 2、私钥加密必须使用与其匹配的公钥才能解密 3、私钥必须严格保密,不能泄露,非对称加密建立在私钥严格保密的基础上。 4、公钥可以随意分发给任何人。 非对称加密相较于对称加密,主要的作用是弥补了对称加密秘钥分发的问题。 非对称加密的公钥可以随意分发给任何人,私钥必须自己保存,不能交给别人,在信息进行交互的时候,我们只要用公钥加密私钥解密,或者私钥加密公钥解密即可。 ![tlb6OO.png](https://s1.ax1x.com/2020/05/31/tlb6OO.png) ### **非对称加密问题** 1、公私钥加密解密是非常耗时的,而web的用户体验不允许我们直接使用公私钥加密 2、公钥是公开的,所以针对私钥加密的信息,黑客截获后可以使用公钥进行解密,获取其中的内容; 3、公钥的分发是个问题,假如服务器端将公钥作为响应发送给客户端,但是这个过程被一个中间人劫持了,然后中间人假装服务器,给客户端发送了一个假的公钥,客户端并不知道中间人的存在,使用假的公钥加密信息,中间人拿到后用和假公钥匹配的私钥解密,信息就泄露了,过程如图: ![tlb4fI.png](https://s1.ax1x.com/2020/05/31/tlb4fI.png) ### **非对称加密问题解决** ## 证书生成 ## chrome不允许访问openssl生成的证书的https网站 参考链接:[https://www.codenong.com/7580508/](https://www.codenong.com/7580508/) 只需将其粘贴到Chrome中: ``` chrome://flags/#allow-insecure-localhost ``` 单击Enable。