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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了https加密了为啥抓包还是明文?相关的知识,希望对你有一定的参考价值。

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

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

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

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

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

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

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

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

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

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

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

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

网站用的是https,为啥抓包用户名密码还是明文传输

参考技术A

网站用的是https,抓包用户名密码还是明文传输的原因是:

https(ssl)加密是发生在应用层与传输层之间,所以在传输层看到的数据才是经过加密的,而我们捕捉到的http post,是应用层的数据,此时还没有经过加密。这些明文信息,其实就是你的本地数据。

HTTP是一个简单的请求-响应协议,通常运行在TCP之上。指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII码形式给出;而消息内容则具有一个类似MIME的格式。HTTP使得开发和部署是那么的直截了当。

扩展资料:

HTTP的相关要求规定:

1、HTTP是应用层协议,同其他应用层协议一样,是为了实现某一类具体应用的协议,并由某一运行在用户空间的应用程序来实现其功能。HTTP是一种协议规范,这种规范记录在文档上,为真正通过HTTP协议进行通信的HTTP的实现程序。

2、HTTP协议是基于C/S架构进行通信的,而HTTP协议的服务器端实现程序有httpd、nginx等,其客户端的实现程序主要是Web浏览器,客户端的命令行工具还有elink、crul等。

Web服务是基于TCP的,因此为了能够随时响应客户端的请求,Web服务器需要监听在80/TCP端口。客户端浏览器和Web服务器之间就可以通过HTTP协议进行通信了。 

3、HTTP规范定义了9种请求方法,每种请求方法规定了客户和服务器之间不同的信息交换方式,常用的请求方法是GET和POST。服务器将根据客户请求完成相应操作,并以应答块形式返回给客户,最后关闭连接。

参考资料来源:百度百科-HTTP

以上是关于https加密了为啥抓包还是明文?的主要内容,如果未能解决你的问题,请参考以下文章

抓包工具(如Charles)抓取Https数据包

https抓包为什么能看到明文?

Https详解+wireshark抓包演示

C中的MCrypt,为啥加密不将明文更改为哈希/加密数据?

密码学系列 - HTTPS

密码学系列 - HTTPS