前段时间装好了burpsuite之后,一直只能拦截http请求,一到https呢,就是这样的效果:
“连接 https网址 时发生错误。 在服务器密钥交换握手信息中 SSL 收到了一个弱临时 Diffie-Hellman 密钥。 (错误码: ssl_error_weak_server_ephemeral_dh_key)”
先来思考为什么burpsuite导入证书之后可以抓https包,以百度为例:https://www.baidu.com
首先了解点密码学。对称密钥加密速度大于非对称,所以https用对称密钥通信。baidu的证书可以简化看作是公钥,私钥在baidu服务端。
其次要了解https原理。http://www.ruanyifeng.com/blog/2014/02/ssl_tls.html 简单的说
1.客户端向服务端索要公钥
2.双方协商生成对称密钥
3.双方使用对称密钥通信
那么burp就是想要拿到这个对称密钥。设置代理之后,浏览器先会使用burp的证书来发送请求(所以要导入证书到受信任的根证书)
burp作为中间人拥有burp的证书对应的私钥,于是burp拿到对称密钥。然后burp从浏览器中拿到baidu的证书,把刚刚拿到的对称密钥用这个证书来加密发给服务端,服务端对于浏览器做的事情毫无感知。同样把信息用对称密钥加密回传到客户端。于是burp成功实现中间人攻击,最后解密出明文。