关于HTTPS的TSL握手

目录
  • TLS握手-流程
    • 基于RSA算法
  • Extra Summary
    • RSA 和 ECDHE 算法区别
  • Extra Question
    • 前向保密是啥?
    • RSA为什么没有前向保密性?
    • ECDHE怎么做到前向保密?

HTTP一般基于TCP协议,而HTTPS就是在这之间加了SSL/TLS协议,那么在TCP三次握手建立TCP连接后,就需要TLS握手建立SSL/TLS连接。

TLS握手-流程

基于RSA算法

(1)首先,客户端向服务器发起加密通信请求-ClientHello请求,该请求包括

① 生成随机数(用于后续会话密钥);

② 客户端支持的密码套件列表,如RSA加密算法。

③ 客户端支持的TLS协议版本;

(2)服务器收到后,作出响应-ServerHello,响应包括

① 生成随机数(用于后续会话密钥)

② 确认密码套件列表;

     ③ 确认TLS协议版本;

同时发送Certificate信息,携带服务器的数字证书。

(3)客户端收到响应后,先通过浏览器或OS中的CA公钥确认数字证书真实合法,再出数字证书中服务器的公钥,使用其加密报文,发送往服务器:

① 一个随机数

② 传递后续通信都以【会话密钥】加密通信的信息;

③ 客户端握手结束通知;

④ 把之前所有发送数据做个摘要,并用【会话密钥】加密,以保证可用和信息未被篡改过。

综上的三个随机数,通过前面双方协商的加密算法,客户端生成本次通信的【会话密钥】

(4)服务器收到后,也会计算出本次通信的【会话密钥】,然后向客户端发送信息:

① 传递后续通信都以【会话密钥】加密通信的信息;

② 服务器握手结束通知

③ 把之前所有发送数据做个摘要,并用【会话密钥】加密,以保证可用和信息未被篡改过。

到这里TLS握手结束!

不,内容还没。

RSA 比较传统的密钥交换算法 不具前向安全的性质 目前使用较少
ECDHE 前向安全 目前广泛使用

Extra Summary

RSA 和 ECDHE 算法区别

(1)ECDHE支持前向保密

(2)使用ECDHE可不需等最后一次TLS握手,就可以提前发送加密的HTTP数据,节省一个消息时间

(3)ECDHE在第2次握手,会出现服务器发出Server Key Exchange信息

以上RSA都达不到该效果。

Extra Question

第三次握手生成的【会话密钥】是对称的还是非对称的?

考虑非对称加密计算耗时量大,在HTTPS后续通信中使用的会话密钥是对称加密的。

前向保密是啥?

要求一个密钥仅可访问它所保护的数据;用来产生密钥的元素一次一换,不能再产生其他密钥;一个密钥被破解,并不影响其他密钥的安全性。

RSA为什么没有前向保密性?

因为RSA每次对称加密传递信息,都是基于公钥加密,私钥解密的,若干服务器私钥被截取了,那么通信数据将轻而易举地被解密。

ECDHE怎么做到前向保密?

关键在于客户端服务端都生成一对公私钥,且密钥是实时生成的。客户端服务器均为生成随机数作为私钥,据特殊公式算出各自的公钥,然后双方据持有的数据算出一个一样随机数用于后续对称加密的密钥。

到此这篇关于关于HTTPS的TSL握手的文章就介绍到这了,更多相关HTTPS的TSL握手内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • TCP/IP协议中三次握手四次挥手的原理及流程分析

    当初学的是通信专业,毕业以后,同学们各奔东西,去追逐自己的梦想,奔波于大大小小的工地之间.哈哈,开个玩笑,也有厉害的,进了某某研究所,嗯?他爸不是所长,内心不要太阴暗.记得有一门十分高大上的课程,名字叫做计算机网络(大概是这个名字吧).里面有一个关于握手的概念,现在温习一下. 先来看看原理图: TCP是面向连接的,无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接.在TCP/IP协议中,TCP 协议提供可靠的连接服务,连接是通过三次握手进行初始化的.三次握手的目的是同步连接双方的序列

  • python Socket之客户端和服务端握手详解

    简单的学习下利用socket来建立客户端和服务端之间的连接并且发送数据 1. 客户端socketClient.py代码 import socket s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 建立连接: s.connect(('127.0.0.1', 9999)) # 接收欢迎消息: print(s.recv(1024).decode('utf-8')) for data in [b'Michael', b'Tracy', b'

  • TCP第三次握手传数据过程图解

    RFC793文档里带有SYN标志的过程包是不可以携带数据的,也就是说三次握手的前两次是不可以携带数据的(逻辑上看,连接还没建立,携带数据好像也有点说不过去).重点就是第三次握手可不可以携带数据. 先说结论:TCP协议建立连接的三次握手过程中的第三次握手允许携带数据. 对照着上边的TCP状态变化图的连接建立部分,我们看下RFC793文档的说法.RFC793文档给出的说法如下(省略不重要的部分): 重点是这句 "Data or controls which were queued for trans

  • node.js 使用 net 模块模拟 websocket 握手进行数据传递操作示例

    本文实例讲述了node.js 使用 net 模块模拟 websocket 握手进行数据传递操作.分享给大家供大家参考,具体如下: websocket 是一种让浏览器与服务器之间建立持久的连接,并能进行双向数据传输的一种协议. websocket 属性应用层协议,基于tcp传输协议,并复用http的握手通道. 一.如何进行websocket连接. websocket复用了http的握手通道,客户端通过http请求与服务端进行协商,升级协议.协议升级完后,后面的数据交换则遵照websocket协议.

  • 详解PHP Swoole与TCP三次握手

    握手常见问题 1.连接拒绝 2.Operation now in progress 多是因为丢包.错误ip.backlog满了&阻塞&tcp_abort_on_overflow=0 3.min(maxconn, backlog) ss -lt 连接拒绝 在TCP三次握手的时候,客户端发送SYN这个包给服务端,服务端不接受这个请求,操作系统直接返回了一个RST的包,来拒绝连接的请求. 最常见的情况就是客户端去请求某个服务器,服务端没有绑定对应的端口. 测试代码如下,服务端代码: <?p

  • 两张动图--带你搞懂TCP的三次握手与四次挥手

    目录 TCP的概述 TCP报文首部 TCP连接的建立(三次握手) 什么TCP客户端最后还要发送一次确认呢? TCP连接的释放(四次挥手) 为什么客户端最后还要等待2MSL? 如果已经建立了连接,但是客户端突然出现故障了怎么办? 总结 背景描述 通过上一篇中网络模型中的IP层的介绍,我们知道网络层,可以实现两个主机之间的通信.但是这并不具体,因为,真正进行通信的实体是在主机中的进程,是一个主机中的一个进程与另外一个主机中的一个进程在交换数据.IP协议虽然能把数据报文送到目的主机,但是并没有交付给主

  • 关于HTTPS的TSL握手

    目录 TLS握手-流程 基于RSA算法 Extra Summary RSA 和 ECDHE 算法区别 Extra Question 前向保密是啥? RSA为什么没有前向保密性? ECDHE怎么做到前向保密? HTTP一般基于TCP协议,而HTTPS就是在这之间加了SSL/TLS协议,那么在TCP三次握手建立TCP连接后,就需要TLS握手建立SSL/TLS连接. TLS握手-流程 基于RSA算法 (1)首先,客户端向服务器发起加密通信请求-ClientHello请求,该请求包括 ① 生成随机数(用

  • https协议详解

    目录 HTTPS协议概念 HTTPS通信(握手)过程 HTTPS的优缺点 优点: 缺点: HTTPS如何保证安全 对称加密: 非对称加密: TLS/SSL的工作原理 TLS/SSL概述 TLS/SSL功能实现 数字证书 数字证书产生的原因 数字证书概念及工作原理 HTTPS协议概念 超文本传输安全协议(Hypertext Transfer Protocol Secure,简称:HTTPS)是一种通过计算机网络进行安全通信的传输协议.HTTPS经由HTTP进行通信,利用SSL/TLS来加密数据包.

  • HTTP与HTTPS握手的那些事

    前提 在讲述这两个握手时候,有一些东西需要提前说明. HTTP与TCP/IP区别? TPC/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据.WEB使用HTTP协议作应用层协议,以封装HTTP 文本信息,然后使用TCP/IP做传输层协议将它发到网络上. 下面的图表试图显示不同的TCP/IP和其他的协议在最初OSI(Open System Interconnect)模型中的位置: PS:表格来自网上资料 CA证书是什么? CA(Certificate

  • Http与https对比详细介绍

     Http与https对比详细介绍 概要: HTTPS(Secure Hypertext Transfer Protocol)安全超文本传输协议 它是一个安全通信通道,它基于HTTP开发,用于在客户计算机和服务器之间交换信息.它使用安全套接字层(SSL)进行信息交换,简单来说它是HTTP的安全版. 它是由Netscape开发并内置于其浏览器中,用于对数据进行压缩和解压操作,并返回网络上传送回的结果.HTTPS实际上应用了Netscape的安 全全套接字层(SSL)作为HTTP应用层的子层.(HT

  • Nginx搭建HTTPS服务器和强制使用HTTPS访问的方法

    HTTPS简介 HTTPS(Hyper Text Transfer Protocol Secure),是一种基于SSL/TLS的HTTP,所有的HTTP数据都是在SSL/TLS协议封装之上进行传输的.HTTPS协议是在HTTP协议的基础上,添加了SSL/TLS握手以及数据加密传输,也属于应用层协议.Https使用的默认端口是443.更多HTTPS原理可以参考阮一峰老师的文章:http://www.ruanyifeng.com/blog/2014/02/ssl_tls.html SSL证书 证书类

  • 浅析Android系统中HTTPS通信的实现

    前言 最近有一个跟HTTPS相关的问题需要解决,因此花时间学习了一下Android平台HTTPS的使用,同时也看了一些HTTPS的原理,这里分享一下学习心得. HTTPS原理 HTTPS(Hyper Text Transfer Protocol Secure),是一种基于SSL/TLS的HTTP,所有的HTTP数据都是在SSL/TLS协议封装之上进行传输的.HTTPS协议是在HTTP协议的基础上,添加了SSL/TLS握手以及数据加密传输,也属于应用层协议.所以,研究HTTPS协议原理,最终就是研

  • 微信小程序Server端环境配置详解(SSL, Nginx HTTPS,TLS 1.2 升级)

    微信小程序Server环境配置详解 主要内容: 1. SSL免费证书申请步骤 2. Nginx HTTPS 配置 3. TLS 1.2 升级过程 微信小程序要求使用 https 发送请求,那么Web服务器就要配置成支持 https,需要先申请SSL证书 小程序也要求 TLS(传输层安全协议)的版本至少为 1.2,在配置好 https之后,如果 TLS 的版本较低,就涉及到升级问题 所以 Server端环境配置的主要步骤: 申请 SSL 证书 配置web服务器支持https(我使用的是nginx)

  • 微信小程序 免费SSL证书https、TLS版本问题的解决办法

    微信小程序 免费SSL证书https.TLS版本问题的解决办法 微信小程序与第三方服务器通讯的域名5个必要条件 1.一个已备案的域名,不是localhost.也不是127.0.0.1,域名不能加端口 2.加ssl证书,也就是https://~~~ 4.HTTPS 服务器的 TLS 版本支持1.2及以下版本,一般就是1.0.1.1.1.2要同时支持这三个版本,一个也不能少,要不然就会出现下面这种情况 5.微信小程序后台加上合法域名设置(一个月内改的次数是有限的,且行且珍惜)如下图 以上5个条件,必

  • Wireshark基本介绍和学习TCP三次握手

    这篇文章介绍另一个好用的抓包工具wireshark, 用来获取网络数据封包,包括http,TCP,UDP,等网络协议包. 记得大学的时候就学习过TCP的三次握手协议,那时候只是知道,虽然在书上看过很多TCP和UDP的资料,但是从来没有真正见过这些数据包, 老是感觉在云上飘一样,学得不踏实.有了wireshark就能截获这些网络数据包,可以清晰的看到数据包中的每一个字段.更能加深我们对网络协议的理解. 对我而言, wireshark 是学习网络协议最好的工具. 阅读目录 wireshark介绍 w

  • 详解HTTPS 的原理和 NodeJS 的实现

    基本原理 HTTP协议采用明文传输数据,当涉及敏感信息的传送时,极有可能会受到窃听或者中间人的攻击.HTTPS是HTTP与SSL/TLS的组合,即使用加密通讯以及网络服务器的身份鉴定来进行信息的安全传输.其核心有二: 使用证书对服务器及请求端的身份验证 使用一组对称秘钥加密包括请求头在内的所有信息传输 握手流程 HTTPS链接的建立过程中涉及到服务器端证书.客户端证书(可选).服务器端的非对称秘钥以及后续通信过程中使用的对称秘钥几个内容. 客户端对HTTPS的地址发出请求,并且将自己的SSL版本

随机推荐