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、参考资料

http://www.ruanyifeng.com/blog/2014/09/illustration-ssl.html

https://blog.cloudflare.com/keyless-ssl-the-nitty-gritty-technical-details/

最新文章

  1. Oracle开发常用函数
  2. 在ubuntu上搭建开发环境4---ubuntu简单的搭建LAMP环境和配置
  3. servlet 文件上传简易版
  4. 关于ES6扩展属性
  5. 支持多浏览器的镜像反转css效果
  6. 完美分割字符串,实现字符串的splict功能
  7. Vue-cli 记录
  8. Numpy - 多维数组(上)
  9. KnockoutJS-模板绑定
  10. STM32L1 串口相应驱动开发
  11. hbase常用操纵操作——增删改查
  12. Jquery Pagination分页插件使用
  13. jQuery如何追加tr到table中任意位置--向Table中指定位置添加tr或td(jQuery)
  14. 20165308 2017-2018-2 《Java程序设计》课程总结
  15. [20171225]查看并行执行计划注意的问题.txt
  16. 003-RHEL7-Linux系统维护管理命令使用
  17. 054——VUE中vue-router之实例讲解定义一下单页面路由
  18. 调用jdbc已经写成的方法----jdbc工具类抽取方式三
  19. Java SE教程
  20. vue2.0做移动端开发用到的相关插件和经验总结1.0

热门文章

  1. Git 更换仓库地址
  2. 如何向MyEclipse项目的文件夹中添加JSP页面?
  3. 【Win10 UWP】URI Scheme(二):自定义协议的处理和适用场景
  4. React Native移动框架功能研究
  5. 【腾讯Bugly干货分享】TRIM:提升磁盘性能,缓解Android卡顿
  6. 作业三 代码规范 代码复审 PSP
  7. SQL语句中,Conversion failed when converting datetime from character string.错误的解决办法
  8. SQL Server 性能优化之——T-SQL TVF和标量函数
  9. 在github上写个人简历——先弄个主页
  10. Atitit 图像处理知识点  知识体系 知识图谱