.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. opencv批处理提取图像的特征

    ____________________________________________________________________________________________________ ...

  2. Deming管理系列(2)——怎样开发度量能力

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMTI1MDQ1NQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQk ...

  3. Django项目实践4 - Django网站管理(后台管理员)

    http://blog.csdn.net/pipisorry/article/details/45079751 上篇:Django项目实践3 - Django模型 Introduction 对于某一类 ...

  4. Android Api 检查參数状态Api

    转载请注明出处:http://blog.csdn.net/droyon/article/details/39938677 在进行Android应用程序开发中,android提供了一个非常好的工具类,来 ...

  5. spring的bean是在什么时候实例化的

    如果没有特殊配置,当bean的scope为原型,也就是singleton的时候,在启动spring容器的时候完成实例化.且需要注意的是,当实例化一个bean的时候,先执行其构造函数代码,然后再执行se ...

  6. 查看和删除chrome浏览器缓存内容

    平时用chrome开发更多,介绍一下如何清除和查看chrome浏览器的缓存内容,其他浏览器大同小异就不细说了 打开设置==>隐私设置和安全性==>内容设置==>cookie ==&g ...

  7. 3D Game Programming withDX11 学习笔记(一) 数学知识总结

    在图形学中,数学是不可或缺的一部分,所以本书最开始的部分就是数学知识的复习.在图形学中,最常用的是矢量和矩阵,所以我根据前面三个章节的数学知识,总结一下数学知识. 一.矢量 数学中的矢量,拥有方向和长 ...

  8. Android查缺补漏(View篇)--自定义 View 中 wrap_content 无效的解决方案

    自定义 View 中 wrap_content 无效的解决方案 做过自定义 View 的童鞋都会发现,直接继承 View 的自定义控件需要重写 onMeasure() 方法,并设置 wrap_cont ...

  9. iOS屏幕适配(尺寸适配)

    屏幕尺寸适配:一 在.pch中加入以下代码,在定义每个尺寸值的时候都调用下边的宏 //以iphone7为例 定义 view相关的宽高宏#define IPHONEHIGHT(b) [UIScreen ...

  10. Java.util.Map排序输出

    在java的众多Map实现中,Map基本上是不能保证顺序的(LinkedHashMap可以保证插入顺序或者访问顺序,TreeMap默认按照key升序但可以自定义Comparator),在开发过程中当数 ...