截获https

转自:https://www.jianshu.com/p/bf58cf32dd9d
http://www.javashuo.com/article/p-decniipi-q.htmlhtml

https请求验证流程

image.png

客户端发起https请求
用户发出一个https请求, 链接到服务端的443端口安全

服务端的配置
采用https协议的服务器必需要有一套数字证书, 能够本身制做, 也能够向相关组织申请, 区别就是本身颁布的证书须要客户端验证经过, 才能够继续访问, 而使用受信任的组织申请的证书则不会弹出提示页面服务器

传送证书(公钥)
这个证书其实就是公钥(其实这个就是非对称加密产生的公钥), 包含了不少信息, 如证书的颁发机构, 过时时间等.工具

客户端解析证书
这里是由客户端的SSL(TSL)来完成的, 首先会检验公钥是否有效, 若是发现异常, 则会弹出一个警告框, 提示证书存在问题, 若是证书没有问题那么就生成一个随机值(对称加密生成的私钥), 而后使用证书对该随机值进行加密(使用非对称产生的公钥加密对称加密生成的私钥保证了私钥的安全性).加密

传送加密信息
这里传送的是用证书加密后的随机值, 目的就是让服务端获得这个随机值(服务端获取到和客户端同样的私钥), 之后客户端和服务端的通讯就能够经过这个随机值来进行加密解密了.htm

服务端解密信息
服务端使用生成证书时产生的私钥解密, 获得了客户端传来的随机值(对称加密产生的私钥), 而后把响应内容经过该随机值进行对称加密. 这样服务端和客户端都有私钥, 就能进行加密和解密了.blog

传输加密后的信息
这部分信息是服务端使用私钥加密后的信息, 能够在客户端利用私钥被还原.get

客户端解密信息
客户端使用以前生成的私钥来解密服务端传来的加密信息, 获取正确内容, 整个过程第三方即便获取了数据, 也没法解密.class

HTTPS常见攻击方式:随机数

降级攻击(SSL剥离攻击)
解密攻击(明文, 证书伪造)
协议漏洞, 实现方法的漏洞, 配置不严格

ps: 关于HTTPS也能够被charles抓包获取被加密的数据的问题, 这个是因为客户端自己安装了伪造的证书, 至关因而中间人攻击, 这个问题, 就是用户问题, 没法去避免的.

中间人攻击

之因此能够攻击,是由于客户端信任的证书的合法性,而后从证书里面获取到公钥对本身随机生成的密钥进行加密,而抓包工具是知道私钥的,能够解密拿到随机的密钥

  • 客户端安装伪造证书
  • 中间人主要是为了获取对称加密的密钥,
    总结:
  • 服务器 用RSA生成公钥和私钥
  • 把公钥放在证书里发送给客户端,私钥本身保存
  • 客户端首先向一个权威的服务器检查证书的合法性,若是证书合法,客户端产生一段随机数,这个随机数就做为通讯的密钥,咱们称之为对称密钥,用公钥加密这段随机数,而后发送到服务器
  • 服务器用密钥解密获取对称密钥,而后,双方就已对称密钥进行加密解密通讯了

    解决方案:代码层面,使用公钥去解密 第三方用户信任的证书,由于证书的私钥中间人是不知道的

相关文章
相关标签/搜索