概述
HTTPS 无非就是 HTTP + SSL/TLS
而 SSL/TLS 的功能其实本质上是:如何协商出安全的对称加密密钥,以利用此密钥进行后续通讯的过程。
一、HTTP 为什么不安全
HTTP 由于是明文传输,主要存在三大风险:窃听风险、篡改风险、冒充风险。
二、SSL/TLS协议是什么
SSL(Secure Sockets Layer)和TLS(Transport Layer Security)的关系
就像windows XP和windows 7的关系,升级后改了个名字而已。
HTTPS=HTTP+TLS
三、对称加密:HTTPS 的最终加密形式。
image.png如图示:使用对称加密的通信双方使用同一把密钥进行加解密。
优点:对称加密具有加解密速度快,性能高的特点
缺点: 无法解决单向对称密钥的传输泄漏问题
四、非对称加密:解决单向对称密钥的传输问题
image.png非对称加密即加解密双方使用不同的密钥,一把作为公钥,可以公开的,一把作为私钥,不能公开。
公钥加密的密文只有私钥可以解密,私钥加密的内容(私钥签名),也只有公钥可以解密(公钥验签)。
优点:解决单向对称密钥的传输问题
缺点: 耗时(对称加密算法比非对称加密算法快大约1500倍)
问题:公钥如何传输?
五、数字证书:解决公钥传输信任问题
1. 背景
员工入职时,企业一般会要求提供学历证明,显然不是什么阿猫阿狗的本本都可称为学历,这个学历必须由第三方权威机构(Certificate Authority,简称 CA)即教育部颁发。
image.png
证书由站点管理者向 CA 申请,申请的时候会提交 DNS 主机名等信息,CA 会根据这些信息生成证书。
2. Q&A
Q1:如何验证证书的真实性,如何防止证书被篡改?
A1:数字签名:私钥签名,公钥验签。
Q2:如何解决CA公钥被调包的风险?
A2:实际上此公钥是存在于 CA 证书上,而此证书(也称 Root CA 证书)被操作系统信任,内置在操作系统上的,无需传输。
Q3:charles 这些中间人为啥能抓到明文的包呢?
A3:charles 这些中间人能抓取 HTTPS 包的前提是信任它们的 CA 证书,然后就可以通过替换证书的方式进行瞒天过海。
五、什么是证书信任链?
背景:
前文说了,我们可以向 CA 申请证书,但全世界的顶级 CA(Root CA) 就那么几个,每天都有很多人要向它申请证书,它也忙不过来啊,怎么办呢?继续往下授权啊。
一级 CA 让 Root CA 来签名认证,二级 CA 让一级 CA 来签名认证,Root CA 没有人给他签名认证,只能自己证明自己了,这个证书就叫「自签名证书」或者「根证书」(系统内置)
举例:
证书信任链现在我们看看如果站点申请的是二级 CA 颁发的证书,client 收到之后会如何验证这个证书呢,实际上 service 传了传给二级 CA 的证书外,还会把证书信任链也一起传给客户端,这样客户端会按如下步骤进行验证:
- 浏览器就使用信任的根证书(根公钥)解析证书链的根证书得到一级证书的公钥+摘要验签;
- 拿一级证书的公钥解密一级证书,拿到二级证书的公钥和摘要验签;
- 再然后拿二级证书的公钥解密 server 传过来的二级证书,得到服务器的公钥和摘要验签,验证过程就结束了。
网友评论