为什么抓包https是明文的?
网站用的是https抓包是明文传输,为什么能看到https报文的明文?
-
https其实就是 http + SSL/TLS 两种协议的合体。http协议是应用层协议,而SSL/TLS是传输层协议。
-
那问题的答案就很清晰了,在你能够在浏览器上面查看网页之前,报文经过了你的传输层,SSL/TLS已经对报文进行了解密处理(快递已经开包)。之后所以不管是在浏览器上呈现,还是你按F12查看源码,都是http协议的事情(快递里面的东西都已经到你手上了,对你而言不会再有啥秘密)。
-
https保证的是传输过程中第三方抓包看到的是密文。客户端和服务端,无论如何都可以拿到明文。
https(ssl)加密是发生在应用层与传输层之间,所以在传输层看到的数据才是经过加密的,而我们捕捉到的http post,是应用层的数据,此时还没有经过加密。这些明文信息,其实就是你的本地数据。
加密层位于http层(应用层)和tcp层(传输层)之间, 所以抓到的http层的数据并没有加密。 同理, 在后台接收端, 经历解密后, 到达http层的数据也是明文。 要注意, https不是对http报文进行加密, 而是对业务数据进行加密, 然后用http传输。所以需要在客户端对密码进行MD5加密处理才行。
- https抓包的原理就是抓包程序将服务器返回的证书截获 ,然后给客户端返回一个它自己的证书;
- 客户端发送的数据抓包程序用自己的证书解密,然后再用截获的证书加密,再发给服务器 所以你在能看到明文。
- 密文是针对https两端以外其他路径而言,你作为https链接的两端,当然可以看到明文 。
HTTPS是通过一次非对称加密算法(如RSA算法)进行了协商密钥的生成与交换,然后在后续通信过程中就使用协商密钥进行对称加密通信,之所以要使用这两种加密方式的原因在于非对称加密计算量较大,如果一直使用非对称加密来传输数据的话,会影响效率。
总结
HTTPS
不是单独的一个协议,它是HTTP
+SSL/TLS
的组合;TLS
是传输层安全性协议,它会对传输的HTTP
数据进行加密,使用非对称加密和对称加密的混合方式;- 抓包工具的原理就是“伪装“,对客户端伪装成服务器,对服务器伪装成客户端;
- 使用抓包工具抓
HTTPS
包必须要将抓包工具的证书安装到客户端本地,并设置信任; HTTPS
数据只是在传输时进行了加密,而抓包工具是接收到数据后再重新加密转发,所以抓包工具抓到的HTTPS
包可以直接看到明文;- 所有,可以采取对密码等敏感字段,进行混淆加密编码后传输,比如前端hash后
加盐
等等
参考:
https://www.cnblogs.com/tester-xt/p/13174279.html
https://blog.csdn.net/stpeace/article/details/78073288
https://blog.csdn.net/kongsuhongbaby/article/details/103210955