漫画:htts是如何保证一台主机把数据安全发给另一台主机

article/2025/9/25 7:08:25

通过漫画的形式由浅入深带你读懂htts是如何保证一台主机把数据安全发给另一台主机的

1681c216df6e1901?w=656&h=125&f=png&s=10973

1681c2253e601ffb?w=624&h=388&f=png&s=128281

1681c227333d60f8?w=651&h=399&f=png&s=137269

1681c229a2555d9e?w=647&h=399&f=png&s=139717

对称加密

1681c230b082db7c?w=624&h=414&f=png&s=145008

一禅:在每次发送真实数据之前,服务器先生成一把密钥,然后先把密钥传输给客户端。之后服务器给客户端发送真实数据的时候,会用这把密钥对数据进行加密,客户端收到加密数据之后,用刚才收到的密钥进行解密。如图:

1681c23c27137dc6?w=886&h=467&f=png&s=101700

当然,如果客户端要给服务器发送数据,也是采用这把密钥来加密,这里为了方便,我采用单方向传输的形式

1681c244096f7b05?w=574&h=383&f=png&s=134295

1681c246fb34b601?w=652&h=374&f=png&s=135064

1681c24a64271217?w=613&h=396&f=png&s=130792

1681c24be9a26312?w=627&h=376&f=png&s=132287

小白:那万一密钥在传输的过程中被别人截取了怎么吧?

例如:

假如服务器用明文的方式传输密钥给客户端,然后密钥被中间人给捕获了,那么在之后服务器和客户端的加密传输过程中,中间人也可以用他捕获的密钥进行解密。这样的话,加密的数据在中间人看来和明文没啥两样

1681c252e8c99f8e?w=628&h=402&f=png&s=142892

1681c2546f2ac33a?w=621&h=350&f=png&s=125973

1681c25688e8f144?w=610&h=394&f=png&s=131115

1681c2581186edf2?w=536&h=393&f=png&s=131538

1681c259f2267eb7?w=599&h=384&f=png&s=122232

非对称加密

1681c25ffdeca5a1?w=593&h=435&f=png&s=132924

一禅:这种方法就是,让客户端和服务器都拥有两把钥匙,一把钥匙是公开的(全世界知道都没关系),我们称之为公钥;另一把钥匙则是保密的(只有自己本人才知道),我们称之为私钥。这且,用公钥加密的数据,只有对应的私钥才能解密;用私钥加密的数据,只有对应的公钥才能解密

这样,服务器在给客户端传输数据的过程中,可以用客户端明文给他的公钥进行加密,然后客户端收到后,再用自己的私钥进行解密。客户端给服务器发送数据的时候也一样采取这样的方式。这样就能保持数据的安全传输了。画个图理解一下:

1681c2676fea9221?w=878&h=460&f=png&s=105866

1681c30f106c9584?w=622&h=377&f=png&s=125630

1681c30d8ea98a71?w=609&h=408&f=png&s=133579

1681c31103a6aca8?w=600&h=452&f=png&s=154354

1681c3136869c082?w=677&h=382&f=png&s=129845

1681c314f4d6da04?w=639&h=411&f=png&s=140948

1681c31809ed2d41?w=675&h=433&f=png&s=163707

1681c3197404578b?w=621&h=422&f=png&s=123730

一禅:处理方式就是结合 对称加密+非对称加密这两种方式,我们可以用非对称加密的方式来传输对称加密过程中的密钥,之后我们就可以采取对称加密的方式来传输数据了。具体是这样子的:

服务器用明文的方式给客户端发送自己的公钥,客户端收到公钥之后,会生成一把密钥(对称加密用的),然后用服务器的公钥对这把密钥进行加密,之后再把密钥传输给服务器,服务器收到之后进行解密,最后服务器就可以安全着得到这把密钥了,而客户端也有同样一把密钥,他们就可以进行对称加密了。

1681c320ab7063a5?w=623&h=412&f=png&s=137639

1681c3222c4b3d7a?w=617&h=368&f=png&s=146871

1681c32443726d2f?w=658&h=416&f=png&s=149698

小白:例如:

服务器以明文的方式给客户端传输公钥的时候,中间人截取了这把属于服务器的公钥,并且把中间人自己的公钥冒充服务器的公钥传输给了客户端。

之后客户端就会用中间人的公钥来加密自己生成的密钥。然后把被加密的密钥传输给服务器,这个时候中间人又把密钥给截取了,中间人用自己的私钥对这把被加密的密钥进行解密,解密后中间人就可以获得这把密钥了。

最后中间人再对这把密钥用刚才服务器的公钥进行加密,再发给服务器。如图:

1681c32b3e7ce41b?w=1080&h=218&f=png&s=115988

毫无疑问,在这个过程中,中间人获取了对称加密中的密钥,在之后服务器和客户端的对称加密传输中,这些加密的数据对中间人来说,和明文没啥区别。

1681c32e95a92682?w=672&h=402&f=png&s=158375

1681c3300f34bfac?w=645&h=444&f=png&s=171347

1681c332234e6e85?w=631&h=396&f=png&s=146685

1681c34222206839?w=635&h=385&f=png&s=141060

1681c3367355e07d?w=664&h=377&f=png&s=145783

1681c343ec7af93d?w=669&h=389&f=png&s=146783

数字证书登场

在刚才的讲解中,我们知道,之所以非对称加密会不安全,是因为客户端不知道这把公钥是否是服务器的,因此,我们需要找到一种策略来证明这把公钥就是服务器的,而不是别人冒充的。

解决这个问题的方式就是使用数字证书,具体是这样的:

我们需要找到一个拥有公信力、大家都认可的认证中心(CA)

服务器在给客户端传输公钥的过程中,会把公钥以及服务器的个人信息通过Hash算法生成信息摘要。如图

1681c34c5c8886b2?w=770&h=237&f=png&s=49645

为了防止信息摘要被人调换,服务器还会用CA提供的私钥对信息摘要进行加密来形成数字签名。如图:

1681c35008254709?w=1080&h=222&f=png&s=64414

并且,最后还会把原来没Hash算法之前的个人信息以及公钥 和 数字签名合并在一起,形成数字证书。如图

1681c35a44d24000?w=1080&h=517&f=png&s=120823

当客户端拿到这份数字证书之后,就会用CA提供的公钥来对数字证书里面的数字签名进行解密来得到信息摘要,然后对数字证书里服务器的公钥以及个人信息进行Hash得到另外一份信息摘要。最后把两份信息摘要进行对比,如果一样,则证明这个人是服务器,否则就不是。如图:

1681c363e1c78bd8?w=989&h=344&f=png&s=96675

这样,就可以保证服务器的公钥安全着交给客户端了。

1681c3674c12cf5e?w=632&h=439&f=png&s=158128

1681c368c9885790?w=676&h=423&f=png&s=154252

其实,(有些)服务器一开始就向认证中心申请了这些证书了(有没有看过没有证书的网站在地址栏会被标出警告?),而客户端是,也会内置这些证书。如图:

1681c36baa4404da?w=1080&h=554&f=png&s=421206

当客户端收到服务器传输过来的数据数字证书时,就会在内置的证书列表里,查看是否有解开该数字证书的公钥,如果有则...,如果没有则....

1681c36e9e2e5933?w=651&h=437&f=png&s=127718

1681c3701b73e75d?w=638&h=417&f=png&s=125661

有收获?不妨点个赞,让更多的人看到这篇文章!

文章首发于我的公众号「苦逼的码农」,更多精彩文章可以关注下我哦。

1681c382cd3b44d2?w=430&h=430&f=png&s=58558

后台回复「666」送你一份我整理的电子书单

转载于:https://www.cnblogs.com/kubidemanong/p/10224040.html


http://chatgpt.dhexx.cn/article/1xIsCbjq.shtml

相关文章

给网站配置免费的HTTS证书

最近看到网上说 https 的网站 Google 会优先收录,所以就抽时间记录下配置博客的过程。 ACME 使用 LetEncrypt 证书作为博客的 https 实现方式。 acme.sh 实现了 acme 协议, 可以从 letsencrypt 生成免费的证书. github https://github.com/Neilpang/acme.sh 主要步骤…

htts ca 制作

https://www.cnblogs.com/gsls200808/p/4502044.html rm -rf /etc/pki/CA/*.old touch /etc/pki/CA/index.txt echo 01 > /etc/pki/CA/serial echo 02 > /etc/pki/CA/serial rm -rf keys mkdir keys 生成根CA并自签(Common Name填RootCA) openssl genrsa -des3 -out ke…

阿里云服务器nginx配置ssl步骤htts

阿里云服务器中要配置ssl 1.先在服务器安装nginx,安装步骤自行搜索,很多。 2.获取ssl证书,可以参考https://mp.csdn.net/console/editor/html/87912845这篇文章,里面有阿里云的免费证书获取方式。 3.安装好以后打开nginx配置文件。 在里面…

Spring Boot 配置 Https 自己生成htts证书

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/u012702547/article/details/99405309 https 现在已经越来越普及了,特别是做一些小程…

Git 的HTTS和SSH方式的区别和使用

文章目录 前言HTTPS协议模式SSH 协议模式1.确认自己电脑是否拥有SSH密钥:2.生成 SSH 密钥3.将SSH密钥添加到服务器4.利用SSH密钥推送 参考链接: 前言 Git 有两种远程仓库与本地仓库之间 push/clone/pull 等操作的验证模式。一种是 HTTPS 模式&#xff0…

TCP / IP 协议族和HTTS

TCP / IP 协议族 概念 一系列协议所组成一个网络分层模型 为什么要分层? 因为网络的不稳定性 如果我们传一个50M的数据,如果失败,每次都将需要重新传50M,但我们把它分成多块,失败时候只需重新传输失败的那一块。 具…

htts 原理

我们都知道HTTPS能够加密信息,以免敏感信息被第三方获取。所以很多银行网站或电子邮箱等等安全级别较高的服务都会采用HTTPS协议。 HTTPS简介 HTTPS其实是有两部分组成:HTTP SSL / TLS,也就是在HTTP上又加了一层处理加密信息的模块。服务端和…

charles抓htts包总结

参考:Charles问题之抓Android手机应用Https包,出现Unknown - 简书 (jianshu.com)Charles问题之Windows10下抓取https包,出现unknown - 简书 (jianshu.com) 一、安装charles root证书 二、在浏览器安装证书(用以电脑浏览器抓https) 三、手机抓…

htts加密过程

文章目录 HTTPS 什么是HTTPS什么是‘加密’ 加密的方式有哪些 对称加密非对称加密 总结HTTPS传输过程 什么是HTTPS HTTPS与HTTP一样都是应用层协议,与HTTP不同的是:HTTP的协议内容都是按照文本方式进行明文传输的,这导致在传输过程第三方者…

HTTS 为什么更安全?

本文已收录于专栏 ⭐️ 《计算机网络》⭐️ 学习指南: HTTPS引入SSL协议加密方式摘要算法数字证书 SSL/TLS握手经典面试题HTTP 与 HTTPS 区别?HTTPS 目前有哪些不足? 完结散花参考文献 HTTPS 引入 HTTP 最凸出的优点是「简单、灵活和易于扩…

HTTPS安全通信基础

导读HTTPS协议提供了较为完善的方案,HTTPS不是一种新协议,是通过HTTP结合SSL/TSL实现了通信安全。但是HTTPS也有其缺点,所以要结合具体场景情况合理地使用才能发挥HTTPS的强大作用。 HTTP是一个优秀的通信协议,不过事物皆具有双面…

HTTP协议与HTTPS协议的介绍与区别

目录 1. HTTP协议的介绍: 2. HTTP工作原理: 3.HTTP三点注意事项: 4.HTTP请求和响应的格式: 5.HTTPS协议的简单介绍: 6.HTTPS的作用: 7.HTTS方式与Web服务器通信的步骤: 8.HTTP与HTTPS的区别&#xf…

HTTS基础知识

简介 HTTPS 指的是超文本传输安全协议(Hypertext Transfer Protocol Secure)。简单的理解,HTTPS 就是将 HTTP 中的传输内容进行了加密,然后通过可靠的连接,传输到对方的机器上。加密的协议是 TLS,其前身是 SSL&#x…

2020年6月最新iOS面试题总结(答案篇)

之前发了这篇iOS面试总结(2020年6月),没想到挺受大家欢迎,本来是没打算为它写答案,但有几个人建议我最好出一篇答案,提的人多了我就答应了下来。因为最近比较忙,断断续续总算补完了,…

iOS面试(内含面试全流程,面试准备工作面试题等)

推荐👇: 收录:zhangferry 都说今年互联网行情很差,iOS行情更差。但到底怎么样呢,不能光听别人说,而要自己走出去看一看。我的面试的阶段基本都在3月份,准备的阶段则要再往前推个半个月吧。期间约到了不少…

iOS面试

iOS面试 智力题计算机基础面向对象的三个要素?堆和栈的区别?HTTP和HTTPS区别?OSI七层模型和五层模型以及对应的协议?HTTP头域包括?说几个状态码?https一定是安全的吗?TCP和UDP的区别&#xff1f…

iOS面试题

整理一些重点和面试问到几率比较大的题目给小伙伴 对您有帮助或者您喜欢的话 希望能点个赞或者添加一下关注 一. CALayer和UIView的区别联系 1 UIView是UIKIt的只能在iOS使用, CALayer是QuartzCore的 iOS和mac os通用2 CALayer比UIView更加轻量级,但是可以实现同样的效果3 UI…

ios面试准备 - 网络篇

iOS面试准备 - ios篇 ios面试准备 - objective-c篇 ios面试准备 - 网络篇 IOS面试准备 - C篇 iOS面试准备 - 其他篇 http和https是什么?http和https有什么区别? HTTP协议是超文本传输协议的缩写,英文是Hyper Text Transfer Protocol。它是从…

iOS面试准备 - ios篇

iOS面试准备 - ios篇 ios面试准备 - objective-c篇 ios面试准备 - 网络篇 IOS面试准备 - C篇 iOS面试准备 - 其他篇 运行时 https://juejin.cn/post/6844903586216804359 Runtime消息发送机制 首先进行方法的查找: 1)iOS调用一个方法时,实…

iOS基础面试题(二)

多数是CocoaTouch社区的回复,其中蓝色字体是我的补充 所有的群都已到人数上限,本着“与时俱进”精神,建了个"iOS面试"公众号, 大家扫码关注后,可直接发消息给我,iOS面试相关的问题我会尽量一一回复。 iOS面试题系列: iOS如何面试 iOS基础面试题(一) iOS基础…