.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font-size: 14.0px; font-family: "Helvetica Neue", "PingFang SC"; color: #454545; min-height: 14.0px }

Q:HTTP协议是明文传输,在凶险的网络世界里裸奔,实在太不安全了!

A:是的,为了解决这个问题,人们搞了个HTTPS协议。

Q:先问一句,HTTPS协议的报文格式和HTTP有什么不同吗?

A:HTTPS的意思是“HTTP over SSL”,加解密过程放在应用层与传输层之间,对于使用SSL的应用层程序来说是无感知的,浏览器收发的依然是标准的HTTP报文

Q:好的,那SSL协议如何完成加密通信?

A:SSL协议使用RSA非对称加密算法,一个该算法的使用者会生成2个密钥,分别是私钥公钥,私钥加密的内容只能用配对的公钥解密,反之亦然;加密算法很强无法被破解,且无法通过一个密钥算出另一个密钥。服务器S在收到客户端C发来的TCP握手后,把自己的公钥发给C;随后C生成自己的公钥和私钥,并把自己的公钥用S的公钥加密后发送给S。这样一来,S和C都互相有对方的公钥啦。

Q:哦,这样一来,S给C发的信息用C的公钥加密,只有C的私钥能解开;C给S发的信息用S的公钥加密,也只有S的私钥能解开。其他人就算拿到了信息也查看不了啦!太棒了!

A:是的。

Q:且慢,有了SSL,只能确保通信内容是保密的,但要是C的DNS服务被劫持了,C与一个假冒S的钓鱼网站建立了SSL连接,那么就算通信加了密,敏感信息还是会落到歹人手里。

A:你说的很对,因此人们又发明了“证书”体系,可以向C证明“与你建立连接的那头确实是S”。

Q:哦?愿闻其详。

A:首先得有一个类似于“公证处”的第三方机构CA(Certification Authority)。S为了防范冒牌货,可以拿着自己的公钥来CA申请认证。CA在验明正身后,会给S一个全局唯一的身份标识,然后生成一个证书(certificate),证书里包含了S的公钥和身份标识。最后,CA用自己的私钥给这个证书加一个数字签名,以证明这个证书确实是CA颁发的。

Q:这样一来,S就拿到了一个CA颁发的证书,证书里有CA的签名,以及S的身份和公钥。

A:是的,现在我们可以改进之前的通信流程。首先C得持有CA的公钥,可能是系统预置,或者用户手动安装。当S收到C的TCP握手后,把自己的证书发给C,C拿到证书后,先用CA的公钥验证签名真伪,确认该证书确实是CA颁发;然后,从证书里获取身份信息,与对方发来的身份信息相比较,确认该证书里的身份确实就是S的身份。身份验证无误后,就可以确认TCP连接的另一头确实是S本尊,可以放心地开始SSL通信啦!

Q:我想想……证书可能被伪造吗?

A:不可能,除非你有CA的私钥。

Q:听起来是极好的。可要是CA把证书颁给了钓鱼网站,那就没得玩了……

A:是的,CA是整个信任体系的根,在信任CA时,一定要慎重!系统里预置了一些世界上知名的CA根证书(含有CA公钥的证书),用户也可以自己添加。

Q:有意思,我想试着解释一下,为了能让Charles代理手机的https请求,我做了什么操作。首先,Charles在开发机上起了个代理服务器Proxy,Proxy为了能与手机建立https连接,需要有一个证书。一个开发用的小破代理显然没资格也没必要去申请什么知名CA的认证,于是Charles自己搞了一个野生的CA,然后用这个CA给Proxy颁发了一个证书。然而手机并不信任这个名不见经传的野生CA,见到Proxy发来的、由野生CA颁发的证书,自然也不会信任,从而拒绝建立TCP连接。为了解决信任问题,就需要我连着Proxy去chls.pro/ssl这个地址下载这个野生CA的根证书,并且在手机里信任它。这一步完成以后,手机在与Proxy建立TCP连接时,Proxy发来的证书就能够被信任并验证,从而顺利建立通信~

A:很好~顺便说一句,历史上还真有些名气很大的CA被黑客攻破服务器拿到私钥,这些CA也因此变得不再可信。为此操作系统里还维持着一个“证书吊销列表”,记录这些倒霉的CA。

HTTPS、证书与使用Charles抓包的更多相关文章

  1. https 通信流程和Charles 抓包原理

    1. https 通信流程 ①客户端的浏览器向服务器传送客户端SSL 协议的版本号,加密算法的种类,产生的随机数,以及其他服务器和客户端之间通讯所需要的各种信息.②服务器向客户端传送SSL 协议的版本 ...

  2. Charles抓包https

    Charles抓包https 灰灰是只小贱狗 2018.05.08 10:46 字数 762 阅读 7800评论 3喜欢 3 抓取HTTPS请求包,对数据进行排查检验 1.安装Charles 2.电脑 ...

  3. charles 抓包 https 证书

    1. 概述 环境:这里是windows8 和 android (参考了ios环境的博客) 手机app点击发出http及https的请求,之前抓包都有请求的相关内容展示,这次没有,原来之前的一直抓的是h ...

  4. Charles抓包工具永久破解+https抓包需要安装安全证书+防止请求乱码

    1.charles4.5.6版本安装+永久破解 链接:https://pan.baidu.com/s/1Z49AE6TG2IXUY-7qoyGU4g 提取码:3i97 安装好charles之后,把下载 ...

  5. charles抓包https设置

    写在前面 https抓包的实现 (一)首先,电脑得装个证书 (二)然后,移动设备上安装证书 (三)最后,Charles添加SSL Proxying 写在前面 开发时,面对各种接口数据,绝大多数时间都会 ...

  6. 接口测试之——Charles抓包及常见问题解决(转载自https://www.jianshu.com/p/831c0114179f)

    简介 Charles其实是一款代理服务器,通过成为电脑或者浏览器的代理,然后截取请求和请求结果达到分析抓包的目的.该软件是用Java写的,能够在Windows,Mac,Linux上使用,安装Charl ...

  7. Charles抓包http和https

    本来不打算写的,度娘一搜一大堆各种教程,实在是网上的各种设置的各种坑都有,我还是站在巨人的肩膀上汇总一下吧 首先http的就不用说了,各种教程版本区别不大,也没什么坑,主要是https: 第一步先下载 ...

  8. 十分钟学会Charles抓包(iOS的http/https请求)

    ### 原文地址,感谢作者 : http://www.jianshu.com/p/5539599c7a25 Charles安装 HTTP抓包 HTTPS抓包 1. Charles安装 官网下载安装Ch ...

  9. 43.Charles抓包(iOS的http/https请求)

    Charles安装 HTTP抓包 HTTPS抓包     1. Charles安装 官网下载安装Charles: https://www.charlesproxy.com/download/ 2. H ...

随机推荐

  1. DOM操作整理

    DOM获取 1. 直接获取 document.getElementById("box_id") 通过ID获取 document.getElementsByName("my ...

  2. 关于我之前写的修改Windows系统Dos下显示用用户名的名字再测试

    最近看到蛮多网友反映,自己修改Dos下用户名后出现了很多的问题--今天抽了时间,再次修改测试... ================= Win10下C:\Users\John以账户名称命名的系统文件夹 ...

  3. 使用django UWSGI 出现 Bad Request (400)

    使用 Nginx + Django+UWSGI 部署机器时,一直出现 Debugging Apache/Django/WSGI Bad Bad Request (400) 错误 最后发现问题是 Dja ...

  4. java poi 导入日期为空

    如上两图,如果是第一种的话,可以导入,,但,如果是第二种的话,导入为空查看,导入的文件,有这么一条 debugger发现 它把2017-11-01转为Double,转不了,出错了,所以,我在catch ...

  5. UGUI表情系统&超链接解决方案

    最近帮一个同事解决图文混排的问题,发现了一种犀利的UGUI表情系统的解决方案 https://blog.uwa4d.com/archives/Sparkle_UGUI.html 使用重新生成UGUI文 ...

  6. 用JAVA自己画一张二维码

    我们都知道,最近2年移动支付在中国堪称新四大发明之一. 二维码无处不在,特别是最近的支付宝扫码领红包,微信,qq,到处在发,阿里有点攻占腾讯移动支付市场的势头啊~博主忽然就对二维码是怎么画的有了点好奇 ...

  7. java宜立方商城项目

    宜立方商城项目 链接: https://pan.baidu.com/s/1c1SokzI 密码: z5cy 网上买的,资源是拿来共享,而不是来牟利的 框架:spring      设计模式      ...

  8. this的理解

    this的理解 看了阮一峰的this讲解,下面是我的理解: 总结来说 this指向 调用this所在方法 的对象: 普通函数 例子1 function test(){ this.x = 1; cons ...

  9. JSON Schema 校验实例

    JSON Schema 简介 JSON Schema is a vocabulary that allows you to annotate and validate JSON documents. ...

  10. CROSS JOIN,NATURAL JOIN

    CROSS JOIN:笛卡尔积 NATURAL JOIN: