您当前的位置:首页 > 电脑百科 > 站长技术 > 服务器

彻底搞清HTTPS安全通讯之SSL/TLS加密协议

时间:2020-07-27 11:08:17  来源:  作者:

一、 简介

  • SSL(Secure Socket Layer 安全套接层),由网景在20世纪90年代开发的安全协议;
  • 1995年Netscape发布SSL v2.0
  • 1996年Netscape发布SSL v3.0
  • 1999年 IETF(Internet工程任务组)发布TLS v1.0,用于替代SSL v3.0
  • 2006年 发布TLS v1.1
  • 2008年 发布TLS v1.2
  • 2018年 发布TLS v1.3
    至2020年3月,微软、苹果、谷歌等多家企业已弃用TLS v1.0 和 TLS v1.1。

目前,应用最广泛的是TLS 1.0,接下来是SSL 3.0。但是,主流浏览器都已经实现了TLS 1.2的支持。TLS 1.0通常被标示为SSL 3.1,TLS 1.1为SSL 3.2,TLS 1.2为SSL 3.3。

二 、通信模式演化

  1. 正常通讯,无加密通信过程很不安全,黑客可以监听双方的通信、拦截通信、伪造数据进行攻击。
  2. 使用密钥加密为了应对攻击,对通信数据使用对称加密算法进行加密。通信双方需要共享密钥。1981年,出现对称加密算法DES。DES使用56bit的密钥。但由于双方需要共享密钥,这个密钥在传输过程中有可能被拦截。
  3. 更高强度的密钥DES可能被暴力破解。为了更高的安全性,出现了triple-DES(最长168bit密钥)、AES (最高 256bit密钥 )。这仍没解决双方传递共享密钥的问题。
  4. 非对称加密最著名的非对称加密算法RSA算法,其加密与解密使用不同密钥,加密的密钥可以公开。这样可以有效解决双方共享密钥的问题。在使用中,通讯双方都有一个公钥和私钥。

A要给B发网络数据流程:

  1. A使用私钥加密数据的hash值
  2. A再用B的公钥加密数据。
  3. A将加密的hash值和加密的数据加上一些其它信息(如时间戳)发给B
  4. B 先用私钥解密数据
  5. B本地运行一个hash值
  6. B用A的公钥解密hash值,与自己运行的比较,检验数据完整性。但最初通讯交换公钥的过程,仍存在被中间人攻击的可能。
  7. 使用可信任机构颁布数字证书

三 、HTTPS

HTTP Over SSL,就是通过SSL/TLS加密HTTP数据。证书链检测工具: myssl.com

四、SSL/TLS 基本运行过程

1. 整体通讯流程

  1. 客户端向服务器端索要并验证公钥
  2. 双方协商生成“对话密钥”
  3. 双方采用“对话密钥”进行加密通信。

SSL/TLS 使用非对称加密 。

  • 保证公钥不被篡改:将公钥放在数字证书中,只要证书是可信的,公钥就是可信的。
  • 每一次对话,双方生成一个对称密钥,用来加密信息,采用对称加密。 非对称加密只用来加密对称加密的密钥。

流程示意图:

彻底搞清HTTPS安全通讯之SSL/TLS加密协议

 

通讯抓包示意图:

彻底搞清HTTPS安全通讯之SSL/TLS加密协议

 

2. 握手阶段详细过程

彻底搞清HTTPS安全通讯之SSL/TLS加密协议

 

握手阶段涉及4次通信。

4.1 客户端发出请求(Client Hello)

客户端数据主要包含:

  • 支持的协议版本,如TLS 1.2版
  • 一个客户端生成的随机数,稍后用于生成公钥
  • 支持的加密方法 ,如RSA
  • 支持的压缩方法。

客户端发送的信息中不包括服务器的域名。2006年,TLS协议加入了一个Service Name Indication扩展,允许客户端向服务器提供它所请求的域名。

彻底搞清HTTPS安全通讯之SSL/TLS加密协议

 

支持的加密算法示例:

彻底搞清HTTPS安全通讯之SSL/TLS加密协议

 

4.2 服务器回应(Server Hello)

服务器收到客户端请求后,向客户端发出回应,包含:

  • 确认使用的加密通信协议版本,比如TLS 1.2版本。如果浏览器与服务器支持的版本不一致,服务器关闭加密通信。
  • 一个服务器生成的随机数,稍后用于生成"对话密钥"。
  • 确认使用的加密方法,比如RSA公钥加密。
  • 服务器证书。

如果是双向认证,服务器需要确认客户端的身份,就会再包含一项请求,要求客户端提供客户端证书。即金融机构服务器端只允许认证客户连入自己的网络,会向正式客户提供USB密钥,里面就包含了一张客户端证书。下面是单向认证抓包示意,Server Hello分成两个包发送。

彻底搞清HTTPS安全通讯之SSL/TLS加密协议

 


彻底搞清HTTPS安全通讯之SSL/TLS加密协议

 

4.3 客户端回应

彻底搞清HTTPS安全通讯之SSL/TLS加密协议

 

客户端收到服务器回应以后,首先验证服务器证书。如果有以下问题:

  • 证书不是可信机构颁布
  • 或者证书中的域名与实际域名不一致
  • 或证书已经过期
    这时就会向访问者显示一个警告,由用户选择是否还要继续通信。

如果证书没有问题,客户端就会从证书中取出服务器的公钥,然后,向服务器发送以下信息:

  • 一个随机数,用服务器公钥加密,称为pre-master key。
  • 编码改变通知,表示随后的信息将用双方商定的加密方法 和密钥发送
  • 客户端握手结束通知,表示客户端的握手阶段已经结束。 这一项同时也是前面发送的所有内容的hash值,用来供服务器检验。

客户端与服务器同时有了三个随机数,接着双方就用事先商定的加密方法,各自生成本次会话所用的同一把”会话密钥“。

使用三次随机数,防止有的主机生成的只是伪随机数。

4.4 服务器回应

服务器收到客户端的第三个随机数pre-master key之后,计算生成本次会话所用的”会话密钥“,然后给客户端发送下面信息:

  • 编码改变通知,表示随后的信息都将用双方商定的加密方法 和密钥发送。
  • 服务器握手结束通知,表示服务器的握手阶段已经结束。这一项同时也是前面发送的所有内容的hash值,用来供客户端检验。
彻底搞清HTTPS安全通讯之SSL/TLS加密协议

 



Tags:SSL/TLS   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
Let's Encrypt —— 这是一个由非营利性组织 互联网安全研究小组(ISRG)提供的免费、自动化和开放的证书颁发机构(CA),简单地说,就是为网站提供免费的 SSL/TLS 证书...【详细内容】
2021-07-28  Tags: SSL/TLS  点击:(78)  评论:(0)  加入收藏
之前有介绍过CentOS下搭建vsftpd服务器,可以参考如下文章CentOS7下搭建vsftpd服务器(本地用户模式)下面开启SSL/TLS用于FTP安全加密传输1、生成自签证书cd /etc/pki/tls/cer...【详细内容】
2020-08-10  Tags: SSL/TLS  点击:(85)  评论:(0)  加入收藏
一、 简介 SSL(Secure Socket Layer 安全套接层),由网景在20世纪90年代开发的安全协议; 1995年Netscape发布SSL v2.0 1996年Netscape发布SSL v3.0 1999年 IETF(Internet工程任务...【详细内容】
2020-07-27  Tags: SSL/TLS  点击:(74)  评论:(0)  加入收藏
通常,不管你是通过 简单邮件传输协议(Simple Mail Transport Protocol)(SMTP)或者 互联网消息访问协议(Internet Message Access Protocol)(IMAP)或 邮局协议(Post Office Protocol)(POP)发送或者接受邮件,邮件服务默认都是以...【详细内容】
2020-05-14  Tags: SSL/TLS  点击:(103)  评论:(0)  加入收藏
SSL/TLS 协议位于网络 OSI 七层模型的会话层,用来加密通信。SSL(Secure Sockets Layer,安全套接字层)是一种标准安全协议,用于在在线通信中建立Web服务器和浏览器之间的加密链接...【详细内容】
2020-02-17  Tags: SSL/TLS  点击:(432)  评论:(0)  加入收藏
HTTPS出生名门:HTTPS协议是由Netscape(网景)公司在1994年提出的,目的是提供对网站服务器的身份认证,用来保证交换数据的隐私与完整性。HTTPS正名已久:在2010年左右,HTTPS开始被广...【详细内容】
2020-01-03  Tags: SSL/TLS  点击:(80)  评论:(0)  加入收藏
▌简易百科推荐
阿里云镜像源地址及安装网站地址https://developer.aliyun.com/mirror/centos?spm=a2c6h.13651102.0.0.3e221b111kK44P更新源之前把之前的国外的镜像先备份一下 切换到yumcd...【详细内容】
2021-12-27  干程序那些事    Tags:CentOS7镜像   点击:(1)  评论:(0)  加入收藏
前言在实现TCP长连接功能中,客户端断线重连是一个很常见的问题,当我们使用netty实现断线重连时,是否考虑过如下几个问题: 如何监听到客户端和服务端连接断开 ? 如何实现断线后重...【详细内容】
2021-12-24  程序猿阿嘴  CSDN  Tags:Netty   点击:(12)  评论:(0)  加入收藏
一. 配置yum源在目录 /etc/yum.repos.d/ 下新建文件 google-chrome.repovim /etc/yum.repos.d/google-chrome.repo按i进入编辑模式写入如下内容:[google-chrome]name=googl...【详细内容】
2021-12-23  有云转晴    Tags:chrome   点击:(7)  评论:(0)  加入收藏
一. HTTP gzip压缩,概述 request header中声明Accept-Encoding : gzip,告知服务器客户端接受gzip的数据 response body,同时加入以下header:Content-Encoding: gzip:表明bo...【详细内容】
2021-12-22  java乐园    Tags:gzip压缩   点击:(8)  评论:(0)  加入收藏
yum -y install gcc automake autoconf libtool makeadduser testpasswd testmkdir /tmp/exploitln -s /usr/bin/ping /tmp/exploit/targetexec 3< /tmp/exploit/targetls -...【详细内容】
2021-12-22  SofM    Tags:Centos7   点击:(7)  评论:(0)  加入收藏
Windows操作系统和Linux操作系统有何区别?Windows操作系统:需支付版权费用,(华为云已购买正版版权,在华为云购买云服务器的用户安装系统时无需额外付费),界面化的操作系统对用户使...【详细内容】
2021-12-21  卷毛琴姨    Tags:云服务器   点击:(6)  评论:(0)  加入收藏
参考资料:Hive3.1.2安装指南_厦大数据库实验室博客Hive学习(一) 安装 环境:CentOS 7 + Hadoop3.2 + Hive3.1 - 一个人、一座城 - 博客园1.安装hive1.1下载地址hive镜像路径 ht...【详细内容】
2021-12-20  zebra-08    Tags:Hive   点击:(9)  评论:(0)  加入收藏
以下是服务器安全加固的步骤,本文以腾讯云的CentOS7.7版本为例来介绍,如果你使用的是秘钥登录服务器1-5步骤可以跳过。1、设置复杂密码服务器设置大写、小写、特殊字符、数字...【详细内容】
2021-12-20  网安人    Tags:服务器   点击:(7)  评论:(0)  加入收藏
项目中,遇到了一个问题,就是PDF等文档不能够在线预览,预览时会报错。错误描述浏览器的console中,显示如下错误:nginx代理服务报Mixed Content: The page at ******** was loaded...【详细内容】
2021-12-17  mdong    Tags:Nginx   点击:(7)  评论:(0)  加入收藏
转自: https://kermsite.com/p/wt-ssh/由于格式问题,部分链接、表格可能会失效,若失效请访问原文密码登录 以及 通过密钥实现免密码登录Dec 15, 2021阅读时长: 6 分钟简介Windo...【详细内容】
2021-12-17  LaLiLi    Tags:SSH连接   点击:(16)  评论:(0)  加入收藏
相关文章
    无相关信息
最新更新
栏目热门
栏目头条