Https应用和面试层面的理解

Http是不安全的协议,主要体现在如下三点

(1)数据是明文传输的

(2)不进行身份验证

(3)不会验证报文的完整性(完整性是包含一致性的)

Https的出现就是解决上面三个问题的

加密(Encryption), HTTPS 通过对数据加密来使其免受窃听者对数据的监听,这就意味着当用户在浏览网站时,没有人能够监听他和网站之间的信息交换,或者跟踪用户的活动,访问记录等,从而窃取用户信息。

数据一致性(Data integrity),数据在传输的过程中不会被窃听者所修改,用户发送的数据会完整的传输到服务端,保证用户发的是什么,服务器接收的就是什么。

身份认证(Authentication),是指确认对方的真实身份,也就是证明你是你(可以比作人脸识别),它可以防止中间人攻击并建立用户信任。
 

我们详细展开:

Https是Http+TLS,TLS(transport layer security)是传输层安全协议,Https的安全性就是靠TLS保证的,具体分为三个部分:加密、数据一致性和身份认证。

加密采用混合加密,就是非对称加密和对称加密都会用到,这是因为效率问题和安全平衡的选择。对称加密比非对称加密快很多,但是对称加密有个问题,如果别人非法拿到了密钥,就可以对信息加密和解密了,就没有安全性可言了,非对称加密,只能公钥加密私钥解密,反之也行。所以加密过程是这样的,client先拿到server的公钥,然后把client生成的对称密钥用公钥加密,传给server,server拿密钥把对称加密的密钥解密出来,这样client和server都有了对称密钥,而且是安全的(我理解为了保证安全,每次通信这个对称密钥都是动态生成的,如果不是,client固定的密钥被破解,还是存在不安全的风险),这样以后的数据就可以通过对称密钥加密了。

非对称加密保证了对称密钥的安全性,对称密钥保证数据的安全性,同时加解密效率高

数据一致性,是采用摘要算法保证的,最简单的摘要算法是MD5,这块比较简单,不展开。

虽然,有了加密和数据一致性的保证,能够保证数据的安全,可是没有解决通信双方信任的问题。也就是说你和骗子之间的交易不论多么安全和有始有终,他终究是骗子,所以,我们得先验证对方是不是骗子。这就需要用到身份认证了,身份认证需要第三方的背书,这个背书的机构就是CA(certificate Authority)证书管理结构。

具体操作就是server在生成公私钥的时候同时会生成签名请求(CSR)。CSR是一个编码的文本文件,其中包含公钥和其他将包含在证书中的信息(例如域名,组织,电子邮件地址等),CSR是包括公钥的,server把CSR发给CA,CA会对CSR中的信息进行验证(我理解,公司是需要在CA提前中报备信息的,一般来说是需要花钱的),验证通过后,CA对CSR进行摘要,然后用CA自己的私钥加密,生成的就叫数字签名,把这个数字签名发给server。在server中,CSR+数字签名就构成了证书。

这就像所有做生意的人,都得到工商局登记报备一样,工商局给发一个经营许可证。

上面只是说了证书怎么来的,还没说证书怎么用,使用证书的过程就是身份认证的过程。具体过程如下

第一步:

网站向客户端发送证书。(这里的网站指的就是server,向client发送证书,这个不理解,我理解是Https请求的时候,从server拿到的证书)

第二步(校验):

客户端用CA公钥解密数字签名得到服务器生成的数字摘要1。(CA的公钥是提前安装的吗?或者手机电脑都提前安装了CA的公钥)

然后客户端也同样计算md5(证书描述信息)获得一个数据摘要2。

对比数字摘要1和数字摘要2, 过关相等,则验证通过。

验证通过后,便可以取出网站公钥进行后面的操作。

Charles抓包Https其实就是采用了Https的原理进行了,charles在client和server中间做了一层,对client来说,charles是server,对server来说,charles是client。Charles同时也是一个CA机构,这点很重要,要不然理解不清楚。

Charles抓包https

有一点概念需要说一些,一般说的安装证书这个说法不对,其实安装的是CA机构的公钥,真正的证书是用来验证的。

有几点疑问:

(1)证书肯定是server发给client的,证书是client通过CA公钥验证server身份的,是不是验证过一次就可以了呢?所以才有了证书安装的概念?因为按照理论证书是验证的,这个目前不清楚。

(2)一般情况,只要client验证server的身份就可以了,不过有些应用场景server也需要验证client的身份,比如在银行的交易过程中。

看完这篇 HTTPS,和面试官扯皮就没问题了

Https中CA的作用

发布了189 篇原创文章 · 获赞 25 · 访问量 22万+

猜你喜欢

转载自blog.csdn.net/lizhongyisailang/article/details/104959508