一、数字证书
1、什么是数字证书
证书用来证明某个网站或文件。
简单可以理解为类似公司公章,用来证明合同文件等是该公司的。
2、什么是CA证书
CA是“证书授权中心”的简称,是负责管理和签发证书的第三方机构。
CA证书即为CA颁发的证书。
证书人人都可以制作,但只有权威机构颁发的证书,大家才能一致认可。
3、什么是根证书
如下图所示,假设C证书信任A证书,A证书信任A1证书,证书之间的关系构成一个树。
根节点的证书即为“根证书”,根证书是不需要证明的,其他证书都需要上一级去证明可靠性。
4、证书的作用
1)验证网站是否可信(针对HTTPS)
证书没有问题的标准:1、证书被某个根证书信任,2、证书上绑定的域名和该网站的域名一致,3、证书没有过期
因为HTTP协议是明文的,如果有人偷窥你的网络通讯,他就可以看到通讯的内容。而HTTPS是加密协议。但是光有加密是不够的,比如有人伪造了一个HTTPS站点,就可能获取到你的账户密码信息。为了防止伪造站点,HTTPS协议除了加密机制,还有一套证书机制。有了证书以后,当访问这个HTTPS网站时,会验证该站点上的CA证书
2)验证文件是否可信
证书还可以用来验证某个文件是否被篡改。具体是通过证书来制作文件的数字签名。
二、抓包安装证书的原理
1、关键思想
构造一个中间人代理,它有能力完成TLS/SSL握手
弄到一个根证书,并用它生成签名认证的代理服务器证书
2、抓包代理服务器的作用
截获真实客户端的HTTPS请求,伪装客户端向真实服务端发送HTTPS请求
接受真实服务器响应,用Charles自己的证书伪装服务端向真实客户端发送数据内容
一般情况下HTTPS中是客户端对服务端做证书校验(所以抓包时候,需要客户端安装代理服务器的证书,并信任)
3、分析chrales代理工具如何实现
Charles就是一个理想的中间人,它支持SSL握手
Charles可以自动根据根证书生成一个签名的服务器证书
Charles的官网为我们提供了一个根证书