谈谈 HTTPS

前言:这是作为一个前端开发对 HTTPS 的浅显的理解,仅仅是可以让你在看完文章之后对 HTTPS 的原理了解,具体的实现方式并没有给出。有不对的地方欢迎指出。

本文首发于我的个人网站:http://cherryblog.site/

什么是 HTTPS

HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。 现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。

HTTP 与 HTTPS 的区别

  • HTTP 是明文传输,HTTPS 通过 SSL\TLS 进行了加密
  • HTTP 的端口号是 80,HTTPS 是 443
  • HTTPS 需要到 CA 申请证书,一般免费证书很少,需要交费
  • HTTPS 的连接很简单,是无状态的;HTTPS 协议是由 SSL HTTP 协议构建的可进行加密传输、身份认证的网络协议,比 HTTP 协议安全。

为什么要使用 HTTPS

前一段时间,公司要求对全栈使用 HTTPS,当时我还在想,HTTPS 不是只用于支付的环节吗,为什么要全栈都使用 HTTPS,真的是图样图森破
其实使用 HTTPS 最主要的用处是以下两点:

  • 建立一个信息安全通道,来保证数据传输的安全
  • 确认网站的真实性,防止钓鱼网站

HTTPS 原理

在看 HTTPS 的时候,在 GOOGLE 搜索的大部分都是一些比较专业的术语,对于一个前端来说,对这些什么应用层、传输层的协议和各种服务器的信息都不是很了解,所以看的不是很明白也看不进去,于是,看到一篇文章:一个故事讲完https 表示勉强可以理解,/(ㄒoㄒ)/~~,于是对其详细的研究了下,对于前端理解 HTTPS 还是可以看一下的。

本文其实就是对这篇文章的理解,不知道其他小伙伴都是什么水平,我是看 HTTPS 原理比较吃力的

序言

来自中国的张大胖和位于米国的 Bill 进行通信

总是有一种被偷看的感觉

由于张大胖和 Bill 都是使用 HTTP 进行通信,HTTP 是明文的,所以他们的聊天都是可被窥视的。于是,二人准备想要改变现状,所以 HTTPS 首先要解决的问题就是要保证传输的内容只有这两个人能看懂

plan1:使用对称密钥

使用对称密钥
使用对称密钥

两人商量了一下,可以使用对称密钥进行加密。(对称密钥也就是加密和解密使用的是同一个密钥)

但是问题又来了~既然网络是不安全的,那么最开始的时候怎么将这个对称密钥发送出去呢?如果对称密钥在发送的时候就已经被拦截,那么发送的信息还是会被篡改和窥视啊~~

所以这种对称密钥的弊端就是,可能被中间人拦截,这样中间人就可以获取到了密钥,就可以对传输的信息就行窥视和篡改。

plan2:使用非对称密钥

使用非对称密钥
使用非对称密钥

RSA(非对称加密算法):双方必须协商一对密钥,一个私钥一个公钥。用私钥加密的数据,只有对应的公钥才能解密,用公钥加密的数据, 只有对应的私钥才能解密。

非对称加密算法
非对称加密算法

这样的话 Bill 将自己的公钥给张大胖,张大胖发送的信息使用 Bill 的公钥加密,这样,只有 Bill 使用自己的私钥才能获取

但是这样有个弊端:

  • RSA 算法很慢= =,要慢很多

所以为了解决这个问题,我们使用非对称密钥 对称密钥结合的方式

plan3:非对称密钥 对称密钥

使用对称密钥的好处是速度比较快,使用非对称密钥的好处是可以使得传输的内容不能被破解,因为就算你拦截到了数据,但是没有 Bill 的私钥,也是不能破解内容的。就比如说你抢了一个保险柜,但是没有保险柜的钥匙也不能打开保险柜。

所以我们要结合两者的优点。使用 RSA 的方法将加密算法的对称密钥发送过去,之后就可以使用使用这个密钥,利用对称密钥来通信了。就比如说我将钥匙放进了保险柜,然后将保险柜寄给对方。

中间人攻击

还有一个问题就是在使用非对称密钥的时候,首先需要将 Bill 的公钥给张大胖,那么在这个过程中,安全是没有保障的,中间人可以拦截到 Bill 的公钥,就可以对拦截到的公钥进行篡改。

这也就是相当于我有手机号,虽然是公开的,谁都可以给我打电话,但是刚开始你并不知道我的手机号,我需要将我的手机号发给你,在我发给你我的手机号的时候,被中间人拦截了,然后将我正确的手机号换成了错误的手机号,比如:110,然后,你收到的就是错误的手机号:110,但是你自己还不知道你收到的是错的手机号,这时候,你要是给我打电话,就尴尬了~~

确认身份 —— 数字证书

所以以上的步骤都是可行的,只需要最后一点就可以了,要确定 Bill 给张大胖的公钥确实是 Bill。 的公钥,而不是别人的。(刚刚电话号码的那个例子,也就是说,需要确定我给你发的电话号码是我的,没有被修改的)

那怎么确认 Bill 给张大胖的公钥确实是 Bill 的呢?

这个时候就需要公证处的存在了。也就是说我需要先将我的电话号码到公证处去公证一下,然后我将电话号码传给你之后,你在将你收到的电话号码和公证处的比对下,就知道是不是我的了。

对应到计算机世界,那就是数字签名

数字签名
数字签名

数字签名也就是相当于公证处在公证书上盖章。

数字证书
数字证书

数字签名和原始信息合在一起称为数字证书,Bill 只需将数字证书发送给张大胖就可以了。

在拿到数字证书之后,就用同样的Hash 算法, 再次生成消息摘要,然后用CA的公钥对数字签名解密, 得到CA创建的消息摘要, 两者一比,就知道有没有人篡改了!

对比消息摘要是否相同
对比消息摘要是否相同

以上你全部看完并且理解了,那么对于 HTTPS 你也就大概有个了解了。

听说写文章可以得异步社区的书,异步社区作为国内顶尖的IT专业图书社区,它的书我非常想要,所以我竭力写了这篇文章,我想要这本书(《Python极客项目编程》

大家如果觉得好给我点个赞吧

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Redis的雪崩是指在同一时段大量的缓存key同时失效或者Redis服务宕机,导致大量请求达到数据库,给数据库带来巨大压力。为了避免缓存雪崩,可以采取一些策略,比如使用布隆过滤器来判断缓存中是否存在key,对于不存在的key可以设置一个null值进行隔离,同时设置随机的过期时间来避免大量key同时失效。 对于Redis的雪崩问题,还有一种情况是由于恶意攻击造成的缓存穿透。比如黑客发出的恶意攻击请求,在缓存中找不到对应的key,每次都直接查询数据库,给数据库带来巨大的负载。为了解决这个问题,可以采用限流策略来保护数据库免受恶意攻击的影响。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Redis缓存雪崩及解决办法](https://blog.csdn.net/wasdgiaogiao__/article/details/130894988)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [009 谈谈Redis的雪崩、穿透和击穿,以及出现这些情况后的应对方案](https://blog.csdn.net/qq_32649581/article/details/124026423)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值