https加密了为什么抓包还是明文?

2025-03-23 01:17:56
推荐回答(2个)
回答1:

1、https默认是密文,但通过中间人方式可间接看到明文,利用的就是客户https请求时需要安装服务端证书再确认公钥
2、抓包程序将服务器返回的证书截获 ,然后给客户端返回一个它自己的证书;现在的抓包工具findler,wireshark都支持创建证书。
所以看到明文的原因,主要就是如下过程:
2.1抓包工具作为客户端和服务端交互,交互用的是【服务端的证书】,相互知道明文

2.2 自己的https请求被抓包工具截获,交互用的是【findler生成的证书】,相互知道明文。
简单理解:
抓包工具已经更改了https原始的证书,所以抓包工具可以看到明文。

请问客户端如何防止伪造证书:
每次https请求都验证证书是否有效(判断是否是服务端证书),无效就不发送请求。

回答2:

  1. https抓包的原理就是抓包程序将服务器返回的证书截获 ,然后给客户端返回一个它自己的证书;

  2. 客户端发送的数据抓包程序用自己的证书解密,然后再用截获的证书加密,再发给服务器 所以你在能看到明文。

  3. 密文是针对https两端以外其他路径而言,你作为https链接的两端,当然可以看到明文 。

  4. 技术一点来说,TLS协议是在tcp协议之上的,tcp又是基于IP协议的。所以无论如何,你的对端IP地址是肯定无法加密的。 

  5. 换个角度来看,假如你把对端ip都加密了,路由器怎么办?你的数据根本无法在网络上转发。

  6. 另外TLS协议也只是把HTTP层的数据加密了,所以也只是无法看到HTTP传输的内容,但是其他协议层的内容还是明文传输的。

  1. 这是因为: https(ssl)加密是发生在应用层与传输层之间,所以在传输层看到的数据才是经过加密的,而我们捕捉到的http 。

  2. post,是应用层的数据,此时还没有经过加密。这些明文信息,其实就是你的本地数据。

  3. 加密数据只有客户端和服务器端才能得到明文,客户端到服务端的通信过程是安全的。