1.为何要使用HTTPS?
使用HTTPS比起HTTP更加的安全,更加利于SEO,搜索引擎会优先索引HTTPS。
2.HTTPS和HTTP有什么区别?
- HTTPS传输数据是加密传输,HTTP是明文传输。
- HTTPS默认使用443端口,HTTP默认使用80接口。
- HTTPS需要用到CA证书,HTTP不需要。
- 访问HTTPS网页会显示绿色的安全锁,HTTP则没有。
3.准备工作
准备工作一:HTTPS = HTTP + SSL
在讨论这个话题之前我们需要了解到HTTPS = HTTP + SSL,HTTP指超文本传输协议,而SSL是一种安全协议,你可以简单地的理解为HTTP开外挂了。
准备工作二:对称加密
所谓对称加密指的是双方都拥有相同的钥匙用于解锁。比如钥匙是123
,当我们要传输数据为456
,我们就使用钥匙加密数据得到579
即123+456
,接收方接收到数据579
之后即可使用钥匙解密数据得到456
即579-123
。
但是对称加密有一个问题是双方如何安全的得到钥匙,因为如果你发送钥匙的时候被截取,那么接下来的传输就和明文传输无异了。
准备工作三:非对称加密
非对称加密表示有两把钥匙,一把用于加密,另一把解密,我们将其称为公钥和私钥,使用公钥加密的数据必须使用私钥解密。所以我们只需要将公钥加密的数据用于传输,即使数据被截取,但是截取的人没有私钥也无法得到真实的数据。听起来好像挺安全的,但是仔细一想如果一开始我们收到公钥就是黑客给的,用黑客的公钥加密数据进行传输,黑客可以轻易的解密我们的信息,我们以为我们是在和服务器对接,其实我们是在和黑客对接。所以我们需要确认我们收到的公钥是不是我们想要对接的服务器发来的,这就需要用到CA证书了。
准备工作四:CA证书
CA证书也被称为数字证书,它是由CA机构颁布的,CA机构是一个权威机构,既然是权威机构颁布的证书我们当然可以选择相信它。一般证书中会有以下内容:
- 签发证书的机构;
- 证书Hash算法;
- 证书上的Hash值;
- 服务器的公钥;
- 证书到期时间;
- 证书的有效时间;
等等。
HTTPS的工作流程
- 浏览器(A)初次访问服务器(B),会传一个
随机数1
,浏览器会提示安装CA证书拿到证书公钥,但是一般不会提示因为window操作系统会内置CA证书。 - B在此时会返回
CA证书
,B的公钥
还有随机数2
,其中包含的内容就是我们准备四中的内容。 - A拿到证书会确认证书的真实性,这里运用到的就是非对称加密的知识了,我们使用CA证书的公钥去解析CA用私钥加密的Hash-a,然后再利用给到的Hash算法生成Hash-b,如果Hash-a==Hash-b,则表示证书是安全可靠的,即代表里面B的公钥也是安全可靠的。当然除了除了校验了CA证书的安全性还会校验例如发送方是否是B加以确认。在完成这个校验之后,我们就可以正常的使用
B的公钥
对数据进行加密了,这个时候我们会生成一个随机数3
并使用B的公钥
加密传给服务器。 - 由于非对称加密的计算量比较大,而此时你会发现A和B都拥有了
随机数1``随机数2``随机数3
,所以我们在此时会使用AES算法
(面试被问过这个算法)对这三个随机数生成会话密钥,接下来就是切换到对称加密传输的步骤了。至此,SSL的流程就走完了。
SSL流程图
sequenceDiagram
浏览器->>服务器: 随机数1
服务器-->>浏览器: CA证书+公钥+随机数2
浏览器->>浏览器: 验证CA证书
浏览器->>服务器: 公钥加密的随机数3
浏览器->>浏览器: 根据3个随机数生成会话密钥
服务器->>服务器: 根据3个随机数生成会话密钥
浏览器->>服务器: 会话密钥加密的信息
服务器->>服务器: 会话密钥解密
服务器-->>浏览器: 根据请求信息返回数据
尾记
HTTPS涉及的知识还蛮杂乱的,但是面试的时候经常会问到,所以我们需要牢记过程,特别提一下非对称加密使用的是RSA算法
,对称加密一般使用AES算法
,如果有兴趣的小伙伴也可以去了解一下相关内容。
以上内容是我对HTTPS的理解,如有错误,希望各位能够留言告知,感谢阅读。
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!