Wireshark分析SSL协议[通俗易懂]

Wireshark分析SSL协议[通俗易懂]SSL:(SecureSocketLayer,安全套接字层),位于可靠的面向连接的网络层协议和应用层协议之间的一种协议层。SSL通过互相认证、使用数字签名确保完整性、使用加密确保私密性,以实现客户端和服务器之间的安全通讯。该协议由两层组成:SSL记录协议和SSL握手协议。TLS:(TransportLayerSecurity,传输层安全协议),用于两个应用程序之间提供保密性和数据完整性。该协议由两层组成:TLS记录协议和TLS握手协议。SSL/TLS位于传输层和应用层之间,应用层数据不再直接传递

大家好,又见面了,我是你们的朋友全栈君。

SSL:(Secure Socket Layer,安全套接字层),位于可靠的面向连接的网络层协议和应用层协议之间的一种协议层。SSL通过互相认证、使用数字签名确保完整性、使用加密确保私密性,以实现客户端和服务器之间的安全通讯。该协议由两层组成:SSL记录协议和SSL握手协议。

TLS:(Transport Layer Security,传输层安全协议),用于两个应用程序之间提供保密性和数据完整性。该协议由两层组成:TLS记录协议和TLS握手协议。

SSL/TLS位于传输层和应用层之间,应用层数据不再直接传递给传输层,而是传递给SSL层,SSL层对从应用层收到的数据进行加密,并增加自己的SSL头。

SSL/TLS协议的基本过程是这样的:
(1) 客户端向服务器端索要并验证公钥。
(2) 双方协商生成”对话密钥”。
(3) 双方采用”对话密钥”进行加密通信。

首先启动WireShark并且打开浏览器,访问使用HTTPS加密的网站,浏览,抓取数据包,发现不能看到数据包的内容。(因为会话被加密了)
由于浏览器用日志文件的方式记录了用来加密TLS数据包的会话密钥,因此可以在WireShark中指定该文件来达到破解目的。

下图为一次ssl会话建立过程:
在这里插入图片描述
下面为抓包操作:

配置环境变量
在这里插入图片描述
配置Wireshark 设置文件路径
在这里插入图片描述
重启浏览器和WireShark 开始抓包!对抓到的包进行过滤,过滤规则:ip.addr == 23.99.125.55 && ssl
在这里插入图片描述
使用wireshark过滤ssl流量,可以看到有几个明显的ssl会话建立包,例如client hello,server hello等。查看抓取到的数据包的详细内容:

1、 Client Hello在这里插入图片描述
不难看出,这一握手过程,客户端以明文形式传输了如下信息:

  1. 版本信息(TLS 1.2)
  2. 随机数
  3. Session ID(用于加快握手过程,可参考TLS会话复用)
  4. 加密套
  5. 压缩算法
  6. 其它一些扩展的(Extension),比如签名算法,服务器名称

2、Server Hello
在这里插入图片描述
这一阶段,服务端返回所选择的协议版本(Version),加密套,压缩算法,随机数,Session ID等,同时将包含自己公钥的证书发送给客户端(Certificate)。

3、数据传输经过了 SSL 握手后,服务端的身份认证成功,协商出了加密算法为 AES,密钥为 xxxxx(客户端和服务端拿三个随机值用相同算法计算出来的,并没有明文传输)。一切准备就绪。 SSL 握手成功,意味着各种应用层协议都可以加密传输。因此对之前所有握手消息进行散列运算,加密后发送给服务器。

Application Data
应用数据传输消息。因为这里是 HTTPS,所以可以对 HTTP 应用协议数据加密然后传输了。

在这里插入图片描述
从这里,不知道密钥是无法知道这里传输的是什么数据,连传输的是什么协议的内容都不知道。 所以之前创建 SSL 隧道,让代理服务器盲传 HTTPS 数据,就得通过 CONNECT 方法告诉代理服务器要连哪台主机,哪个端口号,要不然代理服务器也是一脸懵逼。 所以 SSL 协议是很独立的,这里是对 HTTP 进行了加密,也可以对其他协议进行加密。它就像是 TCP 和应用层协议的中间层,为上层协议提供了加密的数据传输。

Encryted Alert
SSL 警告消息,因为是加密的内容,所以单从 Wireshark 看不出警报的内容。警报消息经常只是客户端用来提示服务端 SSL 传输结束,对照抓包到的内容确实如此。所以这里只是 SSL 传输结束的一个信号。发出了 Encryted Alert 后客户端数据传输完毕,准备进入四次挥手断开 TCP 连接。尝试了好几次没找到这个数据包,可能和没正常断开连接有关。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/137581.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • idea打开工程无法运行java程序_如何运行一个java程序

    idea打开工程无法运行java程序_如何运行一个java程序有时候想运行别人的项目,但是别人的项目并非IDEA项目(甚至只有源码),当我们打开项目时候,并不能运行,我们却不知道怎么办。经过多次查找和尝试,最终终于能够运行起来了。记一下解决的方法。这是源码打开的项目首先,查看sdk是否设置了。可以在File=》ProjectStructure=》Project里面查看并设置。但是,设置后还是不可以运行。如下图:设置SDK…

    2022年9月29日
    3
  • docker mysql 启动失败_mysql启动1067错误

    docker mysql 启动失败_mysql启动1067错误docker启动mysql失败,报错dockerexec-itmysqlmysql-uroot-prootErrorresponsefromdaemon:Container0f83eee59a75595deedecbd40b384333e6db35edd90c5d4c3a0eb3212f2e4665isrestarting,waituntilthecontainerisrunning一直显示正在重启使用dockerlogs–tail50–follow-

    2022年10月6日
    4
  • html中怎样使表格居中,HTML中怎么让表格居中[通俗易懂]

    html中怎样使表格居中,HTML中怎么让表格居中[通俗易懂]回答:IE6/7及IE8混杂模式中,text-align:center可以使块级元素也居中对齐。其他浏览器中,text-align:center仅作用于行内内容上。解决这个问题比较好的方式,就是为所有需要相对父容器居中对齐的块级元素设置“margin-left:Auto;margin-right:Auto”。但这个方式IE6/IE7/IE8的混杂模式中不支持,所以还要设置父容器的”text…

    2025年12月3日
    2
  • 云时代如何保护数据

    云时代如何保护数据

    2021年8月9日
    53
  • JACK——AgentManual9 Beliefset Relations

    JACK——AgentManual9 Beliefset Relations

    2021年8月17日
    67
  • jdk卸载错误

    jdk卸载错误错误提示:已经安装了这个版本提示是否卸载;   在开始运行中输入regedit打开注册表,定位到HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Uninstall错误提示:无法使用此产品的安装源。请确认安装源存在,并且您可以访问它。   优化大师和360也无法卸载,删注册表HKEY_LOCAL_MAC

    2022年6月15日
    47

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号