https抓包_使用wireshark抓包了解https

背景

Https即HTTP over TLS。为避免Http明文传输带来的安全隐患,我们可以对传输的数据进行加密,考虑到性能问题,使用对称加密算法。客户端需要知道服务端使用的密钥及加密算法,如何保证密钥的安全传输呢?这里可以使用非对称加密算法,使用服务端的公钥pubKey来加密传输密钥key。公钥是明文传输的,中间人仍然可以使用自己的公钥加密key欺骗客户端。
542b1523b5394a68a1dae3bc0cf34131
TLS使用证书进行身份认证,保证服务端是受信任的,同时证书中使用数字签名防止被篡改。这样保证了pubKey的安全传输TLS使用协商机制来选择对称加密使用的算法

抓包分析

  1. 选择使用的网卡,设置捕捉过滤器host blog.csdn.net (也可以不设置,抓包后通过显示过滤器查看),开始抓取。
0bd693bcec24400bb4228d4df4d817f9

2. 使用curl https://blog.csdn.net/u010648018/article/details/103447167发起一次https请求

3. 可以看到,首先是tcp的三次握手,然后是tls协商加密算法与密钥交换过程

5d33d05f513e4a52893740aadb641332

4. Client Hello,客户端向服务端发送一个随机数和支持的加密算法

72a5051edaa9412d88a599da735d35db

5. Server Hello,服务端向客户端发送随机数和选择的加密算法(ECDHE)

4637cf8bde4e4e61acd8640c30c6fc68
  1. Certificate, Server Key Exchange, Server Hello Done
  • Certificate 服务端向客户端发送证书链。证书用于身份认证,其中包含服务端公钥PubKey
  • Server Key Exchange 根据上面具体选择的加密算法(ECDHE)准备生成密钥需要的一些参数(premaster)。(RSA算法没有该步骤)
  • Server Hello Done 表明服务端的Hello消息发送完毕
6e90b32fcf474b5d9adbaced8bb543ab
  1. Client Key Exchange, Change Cipher Spec, Encrypted Handshake Message
  • Client Key Exchange 在验证服务端发送证书可信后,生成加密算法所需的一些参数
  • Change Cipher Spec 告诉服务端以后要使用选择的加密算法加密数据
  • Encrypted Handshake Message 根据之前客户端和服务端生成的随机数、加密算法所需的一些参数生成会话密钥key,对之前的握手消息的Hash值和Mac值进行加密,来验证该加密密钥是否可用。服务端以相同的方法生成会话密钥解密该消息,校验其中的Hash值和Mac值。
21c397254c8043bb8b206ed082f62b84
  1. Change Cipher Spec, Encrypted Handshake Message
  • Change Cipher Spec 告诉客户端以后要使用该加密算法来加密数据
  • Encrypted Handshake Message 使用会话密钥key加密之前的握手消息的Hash值和Mac值,发送给客户端校验
095bc69448304b97aba507241b3383bb

9. 双方校验完成,发送加密的应用数据

b04fed61353a447699a5f4847b2698ff

整体流程

7efc46694a0946cd8cca911719ee42e3
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值