客户端拿到数字证书和数字签名后,先通过操作系统或者浏览器内置信任的 CA 机构找到对应 CA 机构的公钥对数字签名进行解密,然后采用同样的摘要算法计算数字证书的摘要 。
如果自己计算的摘要与服务器发来的摘要一致,则证书是没有被篡改过的!
这样就防止了篡改!第三方拿不到 CA 机构的私钥,也就无法对摘要进行加密,如果是第三方伪造的签名自然在客户端也就无法解密,这就防止了伪造!
所以数字签名就是通过这种机制来保证数字证书被篡改和被伪造 。具体流程如下:
文章插图
啥?又不够直观?那我们继续...
文章插图
这里需要注意一点,一个是 CA 机构的公钥,内置在客户端,用来解密数字签名!另一个是目标服务器的公钥,在数字证书内容里,用来协商对称密钥!
HTTPS
本文的标题是 HTTPS,但是到目前为止 HTTPS 只字未提!其实 HTTPS=HTTP+SSL,在 HTTP 层和 TCP 之间加了一个 SSL/TLS 层 。
如下图:
文章插图
SSL(Secure Sockets Layer)中文叫“安全套接层”,后来由于广泛应用,SSL 标准化之后就改名为 TLS(Transport Layer Security)了 。
HTTPS 就是通过上面说到的那些手段来解决网络上可能存在的数据泄密、篡改、假冒的这些问题,保证网络传输的安全的啦!
看到这里的你,对 HTTPS 的原理是否懂了呢,反正我奶奶看完已经懂了!手动狗头(* ̄︶ ̄)
作者:苏静
简介:有过多年大型互联网项目的开发经验,对高并发、分布式、以及微服务技术有深入的研究及相关实践经验 。经历过自学,热衷于技术研究与分享!格言:始终保持虚心学习的态度!
作者:苏静来源:17coding 技术博客
【看完这篇文章,我奶奶都懂了HTTPS原理】