HTTPS 的工作原理

HTTPS工作原理与封堵HTTPS应用 应用特征识别技术: 深度行为检测技术:1、深度包检测技术(DPI) 2、深度流检测技术(DFI) 优点: ①可视化全网 ②流量精细化管理 ③减少或延迟带宽投入,降低网络运营成本 ④及时发现和抑制异常流量 ⑤透视全网服务质量,保障关键业务质量 ⑥丰富的Qos提供能力 深度包检测技术分类: 1、基于“特征字”的检测技术 2、基于应用网关的检测技术 3、基于行为模式的检测技术 深度流检测技术: DFI采... 阅读详情

点击上方“芋道源码”,选择“设为星标”

管她前浪,还是后浪?

能浪的浪,才是好浪!

每天 8:55 更新文章,每天掉亿点点头发...

源码精品专栏

 

来源: stephanietang.github.io/2020/04/19/how-https-works/

  • 我们为什么需要HTTPS?

    • HTTPS是什么?SSL/TLS是什么?

    • SSL/TLS发展史

    • SSL/TLS的工作原理

  • 参考


当你打开浏览器,访问某个网站,如果网址旁有个小锁,代表访问的网址是安全的,反之不安全。当我们没有看到那个小锁的小图标的时候,需要提高警惕,不要随意输入个人重要的资料。所有的银行和支付相关的网站都是100%使用HTTPS的。

google

我们为什么需要HTTPS?

主要有三个原因:

  1. 保护隐私(Privacy):所有信息都是加密传播,第三方无法窃听数据。如果使用HTTP明文传输数据的话,很可能被第三方劫持数据,那么所输入的密码或者其他个人资料都被暴露在他人面前,后果可想而知。

  2. 数据完整性(Integraty):一旦第三方篡改了数据,接收方会知道数据经过了篡改,这样便保证了数据在传输过程中不被篡改 —— 数据的完整性。

  3. 身份认证(Identification):第三方不可能冒充身份参与通信,因为服务器配备了由证书颁发机构(Certificate Authority,简称CA)颁发的安全证书,可以证实服务器的身份信息,防止第三方冒充身份。(也有少数情况下,通信需要客户端提供证书,例如银行系统,需要用户在登录的时候,插入银行提供给用户的USB,就是需要客户端提供证书,用来验证客户的身份信息。)

HTTPS是什么?SSL/TLS是什么?

  • HTTP协议(HyperText Transfer Protocol,超文本传输协议)是大家最熟悉的一种协议,它是一个用于传输超媒体文档的协议,它位于OSI网络协议模型的应用层。但是它是明文传输协议,是非常不安全的,容易被人篡改和窃取数据。

  • SSL(Secure Socket Layer) —— 网景(Netscape)公司设计的主要用于web的安全传输协议。它位于TCP传输层协议和应用层协议之间。(它没有被划分在OSI网络协议模型中,且认为它是应用层的子层。)

  • 众所周知,网景公司20世纪90年代在和微软的竞争中最终败下阵来,之后网景公司将SSL协议的管理权转交给IETF(Internet Engineering Task Force, www.ietf.org)。于是IETF将SSL作了标准化,重新命名为TLS.xn--ietfssl%2Ctls-o68q04a8c50mt9nhxfc5e1qcb41ewo6bpjcqwqez6w/)(Transport Layer Security)。在1999年,TLS 1.0诞生了(其实也就是SSL 3.1)。

  • HTTPS(HyperText Transfer Protocol Secure)是建立在SSL/TLS协议之上,信息通信通过SSL/TLS进行加密,最后一个S就是Secure的缩写,代表安全的意思,HTTPS = HTTP + SSL/TLS。

HTTP v.s. HTTPS

SSL/TLS发展史

SSL
TLS 1.0/1.1/1.2
2013年各大浏览器才开始支持TLS1.2
2018年3月发布了TLS 1.3
  • 实际上现代的浏览器已经基本不使用SSL,使用的都是TLS,SSL 3.0于2015年已经寿终正寝 —— 各大浏览器也不支持了。但是由于SSL这个术语存在的时间太长,很多地方还是广泛的使用它,但是要清楚其实它说的是TLS。

  • 有调查显示现在绝大部分浏览器(> 99.5%)都使用TLS 1.2或者TLS 1.3。只有不足1%的浏览器仍然使用TLS 1.0或者TLS 1.1。

  • TLS 1.2仍然是主流协议(本文写于2020年初),相信将来逐渐TLS 1.3将会作为主流协议。

  • 很多浏览器将会开始不支持TLS 1.0和1.1:

    • Google将在Chrome 72中不推荐使用TLS 1.0和1.1,而Chrome 81之后将会完全不支持。

    • Mozilla的Firefox,微软的Edge和IE以及苹果的Safari都会分别于2020年逐渐移除对TLS 1.0和1.1的支持。

  • 那么一些还在使用TLS 1.0和1.1的网站就得被迫升级到TLS 1.2或者TLS 1.3。

  • 要关闭浏览器对TLS 1.0和1.1的支持,可以在Internet选项中修改:

Internet选项

SSL/TLS的工作原理

需要理解SSL/TLS的工作原理,我们需要掌握加密算法。加密算法有两种:对称加密和非对称加密:

  • 对称加密:通信双方使用相同的密钥进行加密。特点是加密速度快,但是缺点是需要保护好密钥,如果密钥泄露的话,那么加密就会被别人破解。常见的对称加密有AES,DES算法。

  • 非对称加密:它需要生成两个密钥:公钥(Public Key)和私钥(Private Key)。公钥顾名思义是公开的,任何人都可以获得,而私钥是私人保管的。相信大多程序员已经对这种算法很熟悉了:我们提交代码到github的时候,就可以使用SSH key:在本地生成私钥和公钥,私钥放在本地.ssh目录中,公钥放在github网站上,这样每次提交代码,不用麻烦的输入用户名和密码了,github会根据网站上存储的公钥来识别我们的身份。公钥负责加密,私钥负责解密;或者,私钥负责加密,公钥负责解密。这种加密算法安全性更高,但是计算量相比对称加密大很多,加密和解密都很慢。常见的非对称算法有RSA。

SSL/TLS是利用了对称加密和非对称加密的特点。先来看下整个SSL/TLS的握手过程,之后我们再分步骤详细解读,每一步都干了些什么。

SSL/TLS握手
  1. 当TCP建立连接之后,TLS握手的第一步由客户端发起,发送ClientHello的消息到服务器。ClientHello消息包含:

  • 客户端支持的SSL/TLS版本

  • 客户端支持的加密套件(Cipher Suites)

  • 会话Idsession id(如果有的值的话,服务器端会复用对应的握手信息,避免短时间内重复握手)

  • 随机数client-random

“

延伸阅读: 加密套件名如:“TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA256”,这么长的名字看着有点晕吧,不用怕,其实它的命名非常规范,格式很固定。基本的形式是“密钥交换算法-服务身份验证算法-对称加密算法-握手校验算法”。 握手过程中,证书签名使用的RSA算法,如果证书验证正确,再使用ECDHE算法进行密钥交换,握手后的通信使用的是AES256的对称算法分组模式是GCM。验证证书签名合法性使用SHA256作哈希算法检验。相关的算法的用处将在后文中详解。

  1. 然后服务器端在收到这个ClientHello,从中选择服务器支持的版本和套件,发送ServerHello消息:

  • 服务器所能支持的最高SSL/TLS版本

  • 服务器选择的加密套件

  • 随机数server-random

  • 会话Idsession id(用于下次复用当前握手的信息,避免短时间内重复握手。)

随后服务器发送服务器的安全证书(含公钥)。

如果需要客户端也提供证书的话,还会发出客户端证书请求(Client Certificate Request),只有少数金融机构才需要客户端也提供客户端证书。

此后客户端发送Server Hello Done消息表示Hello阶段完成。

  1. 客户端收到ServerHello后,会对收到的证书进行验证。

我们来看一下为什么可以通过CA(Certificate Authority,证书颁发机构)签发的证书来确认网站的身份?

当我们安装操作系统或者浏览器的时候,会安装一组可信任的CA(根证书CA包括GlobalSign、GeoTrust、Verisign等)列表。根CA如GlobalSign就在我们的可信任的CA列表里,你的浏览器或者操作系统含有GlobalSign的公钥。

先来看一下Google的证书,当你访问Google的时候,Google会发给你它的证书。证书中包含颁发机构的签名以及服务器的公钥。

Google证书

浏览器首先用哈希函数对明文信息的摘要做哈希得到一个哈希值(用到的就是证书中的签名哈希算法SHA256),然后用根CA的公钥对根证书的签名作解密得到另一个哈希值(用到的算法就是RSA非对称算法),如果两个哈希值相等则说明证书没有被篡改过。当然还需校验证书中服务器名称是否合法以及验证证书是否过期.

签名的过程

这样就免受中间人攻击了,因为假如有中间人修改了证书的内容(如将证书中的公钥替换成自己的公钥),那么将获得不同的哈希值,从而两个哈希值不匹配导致验证失败。如果要绕过这个机制,中间人必须要也替换签名,使签名也相匹配。而做到这一点就需要破解到了根证书的密钥(而这是不可能的,中间人必然会失败)。浏览器会出现以下画面,告诉你正在遭受中间人攻击,因为证书被篡改了:

不信任网站

那聪明的你肯定也想到了,如果你开发了一个系统还在测试阶段,还没有正式申请一张证书,那么你可以为服务器自签名一张证书,然后将证书导入客户端的CA信任列表中。

信任链机制

Google证书

可以看到证书路径是GlobalSign Root CA-R2 -> GTS CA 1O1->*.google.com。因为我们的浏览器信任GlobalSign Root CA,根据信任链机制,你相信了根CA颁发的证书,也要相信它签名的子CA颁发的证书,也要相信子CA签名的子子CA的证书…而我们通过一级级的校验,如果从根证书到最下层的证书都没有被篡改过,我们就相信最下层的这个服务器证书是合法的。所以在这个机制中,你就需要无条件的相信根证书的颁发机构。

如果通过验证,客户端生成一个随机数pre-master,用于密钥交换过程。

  1. 密钥交换过程:客户端用第三步中服务器的证书中拿到服务器的公钥,用这个公钥加密(算法是加密套件中的密钥交换算法,譬如ECDHE算法)生成密文发送给服务器。

  2. 客户端用server-random + client-random + pre-master一起计算出对称密钥master secret。

  3. 服务器收到第四步的信息之后,用服务器的私钥对密文进行解密得到密钥pre-master。

因为只有服务器有私钥,可以针对客户端发出的加密过的信息进行解密得到pre-master,这样就保证了只有服务器和客户端知道pre-master。服务器端也可以用server-random + client-random + pre-master一起计算出对称密钥master secret。

现在客户端和服务器均有密钥master secret了,后面就可以用它来进行加密和解密了。

“

为什么不能只用一个pre-master作为之后加密的对称密钥? 虽然只有服务器有私钥,能够解密pre-master呀,但仅用它作为master secret是不够安全的,这是因为要以防客户端的pre-master并不是随机数的情况。加上另外两个随机数client-random以及server-random(而这两个随机数和时间有相关性),这样就能保证最后生成的master secret一定是随机数。

  1. 客户端用master secret加密了一条握手完成的消息发送给服务器。

  2. 服务器端也回发了一条用master secret加密的握手完成的消息。

  3. 当两方都收到对方发送的握手消息之后,也成功解密后,就可以用master secret愉快的开始数据加密和解密了。

综上,整个握手过程主要是通过一系列步骤通过非对称加密的算法交换得到了master secret,这个步骤通常需要几百毫秒,但是就是这一顿猛操作之后使得只有服务器和客户端知道master secret。之后的通信又利用了高效的对称算法对所有信息进行加密和解密,虽然加密和解密也需要耗时耗流量,不过信息是完全不可能被别人篡改和破解的,这一点损耗还是值得的。



欢迎加入我的知识星球,一起探讨架构,交流源码。加入方式,长按下方二维码噢:

已在知识星球更新源码解析如下:

最近更新《芋道 SpringBoot 2.X 入门》系列,已经 20 余篇,覆盖了 MyBatis、Redis、MongoDB、ES、分库分表、读写分离、SpringMVC、Webflux、权限、WebSocket、Dubbo、RabbitMQ、RocketMQ、Kafka、性能测试等等内容。

提供近 3W 行代码的 SpringBoot 示例,以及超 4W 行代码的电商微服务项目。

获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。

兄弟,艿一口,点个赞!????

HTTPS协议工作原理 1. 为什么需要HTTPS? 1) 保护隐私(Privacy):所有信息都是加密传播,第三方无法窃听数据。如果使用 HTTP 明文传输数据的话,很可能被第三方劫持数据,那么所输入的密码或者其他个人资料都被暴露在他人面前,后果可想而知。 2) 数据完整性(Integraty):一旦第三方篡改了数据,接收方会知道数据经过了篡改,这样便保证了数据在传输过程中不被篡改。 3) 身份认证(Identification):第三方不可能冒充身份参与通信,因为服务器配备了由证书颁发机构(Certificate Aut 阅读详情

相关推荐

机器视觉中的特征提取【0】:什么是特征提取,特征提取有什么作用?

1.什么是特征提取? 特征提取的英文叫做feature extractor,它是将一些原始的输入的数据维度减少或者将原始的特征进行重新组合以便于后续的使用。简单来说有两个作用:减少数据维度,整理已有的数据特征。 这里我给一个例子来解释特征提取的第二个作用。那就是我们很熟悉的奖学金评定,我们知道学生的文化课成绩,道德分数,以及各种其他竞赛的成绩。摆在奖学金评定委员会面前的任务就是如何知道一个学生是否...

月下花弄影 5万+

HTTPS原理,三分钟轻松搞懂

HTTPS协议原理

qh1112的博客 2万+

人工智能学习之机器人路径规划优化

A* AStar 人工智能 机器人路径规划优化

RongLin02的博客 7073

HTTPS协议及其工作原理

123456

Boone的博客 7194

【Labview】对连续采集数据的一种采样方法

图1如图1,想要对这样一个连续信号进行数据点的采集,我根据网上收集到的方法,在此分享一下最终的结果。可以拓展结合文件的写入,完成对连续信号的采集和输出。 已知: 一个连续信号,如图1. 目标: 设定一定采集点个数、采集点时间间隔、和采集周期次数,得到这条连续信号的数据点,如图2. 图2 方法如下: 主要利用的是队列的方法。 在连续信号生成的时候,不断的写入队列,并且清除队列。 ...

李时珍食疗志的博客 1万+

C#面试题及详细答案120道(61-75)-- 多线程与异步

本文摘要了前后端面试题中关于线程与并发的核心知识点,包括线程与进程的区别(61题)、Thread/ThreadPool/Task的对比(62题)、线程安全实现方法(63题)、lock关键字的原理(64题)、Monitor类的进阶用法(65题)以及死锁的成因与避免(66题)。通过C#代码示例和表格对比,清晰展示了多线程编程的关键概念、应用场景及常见问题解决方案,适合开发者快速掌握面试高频考点。完整内容可访问专栏目录获取更多技术面试题解析。

大剑师兰特的GIS世界 1432

你是否了解HTTPS的加密原理?(面试常问)

        梦梦前段时间面试,以及工作之后负责的模块多多少少都会涉及到一些网络协议的知识,今天就抽出时间整理了其中两个常见的协议:HTTP和HTTPS的区别。 什么是网络协议?HTTP和HTTPS的基本概念HTTP和HTTPS的区别HTTPS的优缺点优点HTTPS的工作原理 什么是网络协议?         网络协议:是计算机网络中为了进行数据

qq_46540738的博客 5919

Python教程:一文了解Python的深拷贝与浅拷贝

理解 Python 中的深拷贝(deep copy)和浅拷贝(shallow copy)是非常重要的,特别是在处理嵌套结构的数据时。让我们深入探讨这两个概念,并通过代码示例进行说明。

旦莫的博客 3969

Https原理及实践

1.Https原理HTTPS要使客户端与服务器端的通信过程得到安全保证,必须使用的对称加密算法,但是协商对称加密算法的过程,需要使用非对称加密算法来保证安全,然而直接使用非对称加密的过程本身也不安全,会有中间人篡改公钥的可能性,所以客户端与服务器不直接使用公钥,而是使用数字证书签发机构颁发的证书来保证非对称加密过程本身的安全。这样通过这些机制协商出一个对称加密算法,就此双方使用该算法进行加密解密。从

江河万川 895

4-20mA电流信号转电压

该电路实现4-20mA电流信号转电压(0.44-2.2V)调理功能,采用两级运放设计:第一级LMH6642MFX进行11倍放大,第二级配置为缓冲器加二阶低通滤波。电路包含10Ω采样电阻、多级RC滤波和ESD防护,具有抗干扰强、功耗低(4mW)等特点,适配3.3V系统ADC采集。通过使能控制MOS管可实现节能模式,适用于工业自动化、环境监测等场景。设计合理平衡了信号精度与功耗,输出电压范围留有充足余量避免饱和。

qq_37999850的博客 308

SIWAVE仿真PCB操作说明

使用SIWAVE进行PCB仿真提取S参数的操作

sinat_15150363的博客 3072

HTTPS的工作原理(面试)

HTTPS的工作原理是什么? 浏览器把自己支持的加密规则发送给网站。 网站从这套加密规则里选出来一套加密算法和hash算法,然后把自己的身份信息用证书的方式发回给浏览器,证书里有网站地址、加密公钥、证书颁发机构。 浏览器验证证书的合法性,然后浏览器地址栏上会出现一把小锁;浏览器接着生成一串随机数密码,然后用证书里的公钥进行加密,这块走的非对称加密;用约定好的hash算法生成握手消息的hash值,然后用密码对消息进行加密,然后把所有东西都发给网站,这块走的是对称加密。 网站,从消息里面可以取出来公钥加

qq_37286668的博客 981

SAP CDS View 教程里的标准视图:SEPM_I_SalesOrderItem_E 当成一张表来用之前,你需要先弄清它到底是什么

摘要:SEPM_I_SalesOrderItem_E 是 SAP EPM demo 中的预交付 CDS 视图,用于表示销售订单行项目数据。它采用 VDM 命名规范,_E 后缀表示对外隐藏内部 UUID 键,提供业务友好的外部 ID 接口。该视图常见于 ABAP Platform 7.50+、开发版系统及 Gateway 教程中,可像表一样通过 Open SQL 查询。实际项目中,这类视图能有效解决内外系统键值映射问题,示例代码展示了如何查询其数据。使用时需注意系统是否安装了 EPM demo 内容。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 558

HTTPS 工作原理

【面试干货】HTTPS 工作原理

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 9035

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

HTTPS工作原理

HTTPS工作原理 在传统的HTTP协议中,在网络上传播的信息有可能被窃听,篡改。而HTTPS的引入,就是为了解决这些安全问题,下面我们就来探究一下HTTPS的工作原理。 什么是HTTPS HTTPS是一种以安全为目标的HTTP协议,简单来说就是HTTP的安全版。即在HTTP层下面加入SSL层,SSL层负责加解密,HTTPS的安全基础是SSL。 SSL:(Secure Socket Layer,安全套接字层),位于可靠的面向连接的网络层协议和应用层协议之间的一种协议层。SSL通过互相认证、使用数字签名确保

morris 2万+

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

HTTP和HTTPS的区别及HTTPS的工作原理

1、安全性2、URL3、证书4、性能建立连接:握手阶段(Handshake):加密通信:数据传输:结束连接:

m0_53327171的博客 1177

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

HTTPS工作原理及报文讲解

1 HTTPS 1.1 HTTPS简介 HTTPS(Secure Hypertext Transfer Protocol)安全超文本传输协议,是一个安全通信通道,它基于HTTP开发用于在客户计算机和服务器之间交换信息。它使用安全套接字层(SSL)进行信息交换,简单来说它是HTTP的安全版,是使用TLS/SSL加密的HTTP协议。 SSL (Secure Sockets Layer)安全套接层。是由Netscape公司于1990年开发,用于保障Word Wide Web(WWW)通讯的安全。主要任务..

echo 1万+

HTTP和HTTPS的工作原理及区别

一、HTTP和HTTPS的基本概念 HTTP(HyperText Transfer Protocol:超文本传输协议):是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从Web服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。 HTTPS(HyperText Transfer Protocol Secure:超文本传输安全协议):是以安全为目标的HTTP通道,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就

isfor_you的博客 4528

https工作原理详解

https工作原理详解/一文了解HTTPS工作全貌

时光不语的博客 8574

https开头的网址是什么意思_网站https含义是什么?工作原理又是什么

目前很多网站都开始采用Https协议,对应很多网站优化工作人员都不清楚Https到底是什么?它的工作原理又是什么?今天推来客建站公司就为大家总结出Https的详细介绍,为各位网站优化人员提供一个详细解答。什么是https推来客网络公司讲述。https(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的https通道,...

weixin_39977136的博客 3423

https工作原理

摘自拓拓的“https工作原理及CA证书部署”https://blog.youkuaiyun.com/think_program/article/details/60780843https的工作原理HTTPS在传输数据之前需要客户端(浏览器)与服务端(网站)之间进行一次握手,在握手过程中将确立双方加密传输数据的密码信息。TLS/SSL协议不仅仅是一套加密传输的协议,更是一件经过艺术家精心设计的艺术品,TLS/...

CathyYang82的博客 453

深入浅出HTTPS工作原理

 <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <link rel="canonical" href="https://blog.youkuaiyun.com/a724888/article/details/79596360"/&a

XINJing的专栏 3万+
上一篇: 37000 字 + 代码,艿艿肝的 Shiro 从入门到实战,直接收藏吃灰!
下一篇: 在小公司做了 3 年 Java,他受够了!
公众号-芋道源码
博客等级 码龄10年 1636粉丝 377原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值