HTTPS简明扼要,言简意赅

141 阅读3分钟

http:明文传输,在传输过程中,不会验证通信方的身份,不会验证报文的完整性,任何人都有可能从中截获、修改或者伪造请求发送 image.png

image.png

https

image.png 最终的通信模式:对称加密通信

HTTPS 的出发点是解决HTTP明文传输时信息被篡改和监听的问题。

防止被篡改:表现1:监听者直接修改密文,浏览器解密不成功,终止访问;表现2:获取CA证书阶段,监听者发送自己的证书(危险证书)返回浏览器,但证书里的域名不是浏览器访问的域名,终止访问

防止被监听:得到的密文,监听者解不开。

HTTPS 协议提供了三个关键的指标 加密、数据一致性、身份认证

PS:对称加密,就是客户端和服务器共用同一个密钥

非对称加密:公钥和私钥。

在浏览器和网站首次商定密钥的时候需要使用非对称加密,通信成功后会采用对称加密,通信效率更高。

为什么首次商定密钥要用非对称加密?因为对称加密是共用同一个密钥,大家双方都不认识对方,一开始肯定没共同的秘钥,而网站有公钥所以用用非对称加密

image.png 以前是这样得到公钥的(获取公钥方式A)

image.png 流程A

浏览器随机生成秘钥A,并用得到的公钥加密,把数据传回给网站,网站用私密解密得到秘钥A,后续就用这个秘钥A来对称加密的方式通信,执行流程B

image.png 流程B

综上是不是很完美,然而获取公钥方式A是有缺陷的

image.png 通信期间公钥可能被篡改。

image.png

所以CA就出现了, 所有主流CA机构的公钥内置到操作系统,每个网站都会向CA机构申请签发数字证书,网站的公钥也会放到CA里, 证书制作完成后,CA 机构会使用自己的私钥对其加密,并将加密后的数据返回给网站。

浏览器请求网站时,网站返回CA通过私钥加密的数据(证书)(疑惑:窃听者不也可以用本地CA公钥解密数据?),浏览器便用本地CA公钥来解密数据,得到网站的公钥,再执行流程A

image.png 这个回答了刚刚的疑惑, 解密出来的证书中包含域名信息,如果和浏览器正在请求的域名对不上,则终止请求。

总结HTTPS通信流程:浏览器访问网站时,网站会返回自己网站的CA数字证书,浏览器用本地的公钥(主流CA机构的公钥内置到操作系统)解密数字证书得到网站的公钥,浏览器随机生成秘钥A,通过网站公钥加密,再传回给网站,网站用私钥解密得到秘钥A,后续的通信就用秘钥A来进行加解密,也就是先非对称加密,后对称加密。

referrence:juejin.cn/post/692529…