博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
抓包分析SSL/TLS连接建立过程【总结】
阅读量:5948 次
发布时间:2019-06-19

本文共 1148 字,大约阅读时间需要 3 分钟。

1、前言

  最近在倒腾SSL方面的项目,之前只是虽然对SSL了解过,但是不够深入,正好有机会,认真学习一下。开始了解SSL的是从https开始的,自从百度支持https以后,如今全站https的趋势越来越强烈,互联网对安全的认识越来越深入。本文根据自己的实际情况,对SSL链接建立做个总结。SSL相关的非对称加密和加密,涉及到公钥、私钥、证书、对称密钥,这些非常复杂,本文不会涉及。本文重点介绍SSL的握手过程,客户端和服务端的步骤,通过wireshark抓包分析整个过程。

2、基本概念

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

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

TLS是在SSL的基础上标准化的产物,目前SSL3.0与TLS1.0保持一致的,二者是并列关系,只是大家习惯称呼SSL。注明的web服务nginx默认支持的就是TLS1.0、TLS1.1、TLS1.2协议。调用的openssl库中,对应的就是ssl3_acceptt函数。

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

3、握手过程

  我使用nginx搭建了一个https的服务,nginx的默认ssl cipher为HIGH:!aNULL:!MD5; 不同的cipher 决定了握手的交互过程。chrome浏览器支持的cipher如下所示:

cipher的格式为:认证算法_密钥交换算法_加密算法_ 摘要算法

首先看看最基本的基于RSA的密钥协商算法,配置的ssl sipher为 AES256-GCM-SHA256。

使用wireshark抓包分析,抓包如下所示:

 从上面报文可以看出,SSL建立过程如下图所示:

 使用椭圆曲线(ECDHE)算法作为密钥交换算法,配置ssl ciper为:,交互流程如下所示:

抓包看如下:

 从上面报文可以看出,SSL建立过程如下图所示:

 相比RSA算法而言,握手过程多了一个server key exchange步骤

 RSA算法服务端没有Server key Exchange。

4、参考资料

转载于:https://www.cnblogs.com/Anker/p/6082966.html

你可能感兴趣的文章
H5混合开发APP配置以及第一个工程--博客园老牛大讲堂
查看>>
Laravel通过Swoole提升性能
查看>>
ES6系列_5之数字操作
查看>>
【转】mysql 分析查找执行效率慢的SQL语句
查看>>
在已经定义好的系统类或者自定义类中添加扩展方法
查看>>
各种SKYPE网页代码,SKYPE在线代码
查看>>
eclipse安装与使用
查看>>
Java零基础学习(二)自定义类型及基本语法
查看>>
linux中强大且常用命令:find、grep
查看>>
jdk源码分析红黑树——插入篇
查看>>
android使用JNI调用C,C++
查看>>
C++ 标准模板库介绍(STL)
查看>>
【构造】【贪心】hdu6090 Rikka with Graph
查看>>
【最大流】【Dinic】bzoj1711 [Usaco2007 Open]Dingin吃饭
查看>>
IIS7.5做301转发权重转移教程
查看>>
【计蒜客】贝壳找房户外拓展(中等)扫描线+线段树
查看>>
mybatis主键返回的实现
查看>>
org.openqa.selenium.StaleElementReferenceException
查看>>
Android Intent传递对象为什么要序列化?
查看>>
数论之 莫比乌斯函数
查看>>