[ 网络协议篇 ] 一篇文章让你掌握什么是 HTTPS ?(下)

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: HTTP 和 HTTPS 是老生常谈的问题,无论是在校学习还是找工作,老师和面试官几乎都会问道HTTP 是什么?HTTPS 是什么?他们有什么区别 ?其实学好 HTTP 和 HTTPS 是很重要的,有利于我们后续的学习和参加工作。相信平时上网的时候也很少有人关注这个问题,只是知道计算机网络里 HTTP 的概念。其实这一块的知识延伸很广,还需要了解加密算法和 SSL 协议。未来几篇文章我们就来聊一聊这几个问题,相信仔细看完,会有很大收获。

🍬 博主介绍


👨‍🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~

✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】

🎉点赞➕评论➕收藏 == 养成习惯(一键三连)😋

🎉欢迎关注💗一起学习👍一起讨论⭐一起进步📝文末有彩蛋

🙏作者水平有限,欢迎各位大佬指点,相互学习进步!


三、工作原理(HTTP加入SSL证书)



HTTPS在传输数据之前需要客户端(浏览器)与服务端(网站)之间进行一次握手,在握手过程中将确立双方加密传输数据的密码信息。

TLS/SSL 协议不仅仅是一套加密传输的协议,更是一件经过艺术家精心设计的艺术品,TLS / SSL中使用了非对称加密,对称加密以及HASH算法。


1. 握手过程的具体描述如下:

1. 浏览器将发送自己的加密规则

浏览器将自己支持的一套加密规则发送给网站。

 

2. 网站选择加密规则,回复证书

网站从中选出一组加密算法与HASH算法,并将自己的身份信息以证书的形式发回给浏览器。证书里面包含了网站地址,加密公钥,以及证书的颁发机构等信息。

 

3. 浏览器获得网站证书之后浏览器的操作:

1.  
验证证书的合法性(颁发证书的机构是否合法,证书中包含的网站地址是否与正在访问的地址一致等),如果证书受信任,则浏览器栏里面会显示一个小锁头,否则会给出证书不受信的提示。

2. 如果证书受信任,或者是用户接受了不受信的证书,浏览器会生成一串随机数的密码,并用证书中提供的公钥加密。

3. 使用约定好的HASH算法计算握手消息,并使用生成的随机数对消息进行加密,最后将之前生成的所有信息发送给网站。


4. 网站接收浏览器发来的数据之后网站要做的操作:

1. 使用自己的私钥将信息解密取出密码,使用密码解密浏览器发来的握手消息,并验证HASH是否与浏览器发来的一致。 


2. 使用密码加密一段握手消息,发送给浏览器。


5. 浏览器解密HASH进行验证

浏览器解密并计算握手消息的HASH,如果与服务端发来的HASH一致,此时握手过程结束,之后所有的通信数据将由之前浏览器生成的随机密码并利用对称加密算法进行加密。


6. 注意:

这里浏览器与网站互相发送加密的握手消息并验证,目的是为了保证双方都获得了一致的密码,并且可以正常的加密解密数据,为后续真正数据的传输做一次测试。


2. HTTPS一般使用的加密与HASH算法如下:

这里不过过多介绍,想详细了解的可以看:

虚拟专用网简介__PowerShell的博客-CSDN博客

虚拟专用网的五种技术里面的加解密技术详细讲解了加密算法


1. 非对称加密算法:RSADSA/DSS

2. 对称加密算法:AESRC43DES

3. HASH算法:MD5SHA1SHA256


3. 数据包过程

注意:公钥数字证书 = 数字证书 = CA证书

          公钥数字签名 = 数字签名

          HTTPS所使用到的数字证书是SSL证书(下一篇文章将详细介绍数字证书)

数字证书_百度百科 (baidu.com)数字签名_百度百科 (baidu.com)

image.png


1. 关键点:公钥数字证书(数字证书、CA证书)

2. 公钥数字证书是怎么生成的 ?

站点运维人员生成非对称密钥(私钥公钥)CA机构提交信息,CA机构验证信息。生成公钥数字证书。


3. 公钥数字证书包括什么 ?

公钥数字证书包括:公钥、组织信息、CA信息、有效时间、证书序列号、签名算法、同时生成一个签名(数字签名)


4. CA信息包括什么 ?

CA信息:CA机构颁发的。包括CA机构信息、包括CA机构的公钥


5. 签名步骤:

hash(拟用于申请证书所提交的明文信息)= 信息摘要

            将提交的信息做一个信息摘要  防止篡改

      CA再使用CA机构的私钥对信息摘要进行加密,密文就是数字签名  

数字签名包含在公钥数字证书里面

站点运维人员再把它部署在服务器上面


6. 浏览器如何验证数据 ?

浏览器验证数据:这时候的公钥就不单单是一个公钥了是一个公钥数字证书(有很多信息组成)(CA信息 公钥用户信息 公钥 权威机构签名 有效期)

第五个包  浏览器收到公钥数字证书之后还需要完成一个验证的操作

      服务器拿到了数字证书,就拿到了,公开的信息

      公钥数字证书里面包括了一个  签名算法  就可以利用签名算法 对公开信息进行加密

得到信息摘要  再通过公钥数字签名里面的CA信息(包含CA机构的公钥)利用公钥对数字签名进行解密   通过浏览器自己得到的摘要  和解密得到的摘要进行兑对比

      如果两个信息摘要是一致的 说明这个证书是正确的没有被篡改的


7. 谁来验证CA信息呢?

由上级权威机构验证,权威机构由根CA机构验证

我们再进行CA证书的部署的时候部署的是一个公钥的证书链,不是说只有一个证书(谁给他颁发的,上级是谁颁发的)。

但是不会包含根证书,根证书是内置在浏览器里面的(或者说内置在操作系统里面的(这个是一定不能有问题的)(由操作系统来保障它的安全))


8. 公钥数字证书生成过程图示:

image.png


四、HTTPS 的优缺点



1. 优点

1. 使用 HTTPS 协议可认证用户和服务器,确保数据发送到正确的客户机和服务器。

2. HTTPS 协议是由 SSL+HTTP 构建的可进行加密传输、身份认证的网络协议,要比 HTTP安全,可防止数据在传输过程中被窃取、改变,确保数据的完整性

3. HTTPS 是现行架构下最安全的解决方案,虽然不是绝对安全,但它大幅增加了中间人攻击的成本。

2. 缺点

1. 资源消耗大

相同网络环境下,HTTPS 协议会使页面的加载时间延长近 50%,增加 10% 20%的耗电。此外,HTTPS 协议还会影响缓存,增加数据开销和功耗。


2. 并非绝对安全

HTTPS 协议的安全是有范围的,在黑客攻击、拒绝服务攻击和服务器劫持等方面几乎起不到什么作用。


3. SSL 证书的信用链问题

最关键的是,SSL 证书的信用链体系并不安全。特别是在某些国家可以控制 CA 根证书的情况下,中间人攻击一样可行。


4. 成本增加

部署 HTTPS 后,因为 HTTPS 协议的工作要增加额外的计算资源消耗。

例如: SSL 协议加密算法和 SSL 交互次数将占用一定的计算资源和服务器成本。在大规模用户访问应用的场景下,服务器需要频繁地做加密和解密操作,几乎每一个字节都需要做加解密,这就产生了服务器成本。

随着云计算技术的发展,数据中心部署的服务器使用成本在规模增加后逐步下降,相对于用户访问的安全提升,其投入成本已经下降到可接受程度。

相关文章
|
5月前
|
NoSQL Java Redis
Redis系列学习文章分享---第十八篇(Redis原理篇--网络模型,通讯协议,内存回收)
Redis系列学习文章分享---第十八篇(Redis原理篇--网络模型,通讯协议,内存回收)
82 0
|
5月前
|
存储 消息中间件 缓存
Redis系列学习文章分享---第十七篇(Redis原理篇--数据结构,网络模型)
Redis系列学习文章分享---第十七篇(Redis原理篇--数据结构,网络模型)
95 0
|
4月前
|
缓存 网络协议 算法
(二)Java网络编程之爆肝HTTP、HTTPS、TLS协议及对称与非对称加密原理!
作为一名程序员,尤其是Java程序员,那必须得了解并掌握HTTP/HTTPS相关知识。因为在如今计算机网络通信中,HTTP协议的作用功不可没,无论是日常上网追剧、冲���、亦或是接口开发、调用等,必然存在HTTP的“影子”在内。尤其对于WEB开发者而言,HTTP几乎是每天会打交道的东西。
91 10
|
3月前
|
网络协议 编译器 Go
揭秘!TCP、RPC、gRPC、HTTP大PK,谁才是网络通信界的超级巨星?一篇文章带你秒懂!
【8月更文挑战第25天】本文以教程形式深入对比了TCP、RPC、gRPC与HTTP这四种关键通信协议,并通过Go语言中的示例代码展示了各自的实现方法。TCP作为一种可靠的传输层协议,确保了数据的完整性和顺序性;RPC与gRPC作为远程过程调用框架,特别适合于分布式系统的函数调用与数据交换,其中gRPC在性能和跨语言支持方面表现出色;HTTP则是广泛应用于Web浏览器与服务器通信的应用层协议。选择合适的协议需根据具体需求综合考量。
222 0
|
4月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的网络在线考试系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的网络在线考试系统附带文章源码部署视频讲解等
50 0
基于springboot+vue.js+uniapp的网络在线考试系统附带文章源码部署视频讲解等
|
5月前
|
安全 网络协议 算法
Android网络基础面试题之HTTPS的工作流程和原理
HTTPS简述 HTTPS基于TCP 443端口,通过CA证书确保服务器身份,使用DH算法协商对称密钥进行加密通信。流程包括TCP握手、证书验证(公钥解密,哈希对比)和数据加密传输(随机数加密,预主密钥,对称加密)。特点是安全但慢,易受特定攻击,且依赖可信的CA。每次请求可能复用Session ID以减少握手。
62 2
|
5月前
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的网络办公系统附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的网络办公系统附带文章和源代码部署视频讲解等
48 8
|
4月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的网络互联实验平台附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的网络互联实验平台附带文章源码部署视频讲解等
51 0
|
5月前
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的网络财务管理系统附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的网络财务管理系统附带文章和源代码部署视频讲解等
49 6
|
5月前
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的网络直播带货查询系统附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的网络直播带货查询系统附带文章和源代码部署视频讲解等
38 4