彻底弄懂HTTPS概念与原理 / HTTPS 入门教程

2023年4月9日学习笔记评论59,552字数 1119阅读3分43秒阅读模式

基础概念

HTTPS 全称 HTTP over SSL / TLS,

本质还是用http通信,但是用SSL / TLS层进行数据加密。

不加https的后果

容易被窃听(因为通信明文传送)

传输的数据容易被篡改(比如早期的网络欠费通知)

假冒网站

SEO容易受损

加密协议SSL / TLS

TLS:全称Transport Layer Security

SSL:全称Secure Socket Layers

它们都是加密协议,可以在英特网安全传输数据。

TLS是SSL的升级版本,具体可以看下它们的发布时间,有个概念即可。

R_23-04-09-22-06-06_80

https如何加密网站传输

对称加密(一把钥匙)

加密套件列表(浏览器支持加密方法的列表)

下面是浏览器与服务端一个基础的安全协商过程:

R_23-04-09-22-08-13_80

之后通信就是用随机数混合成秘钥,来进行双方的通信。也就是对称加密。

但是因为握手的时候,全都是明文的,秘钥也就可以在攻击者那里合成,所以容易被破解。

R_23-04-09-22-08-57_80

非对称加密(两把钥匙,公钥和私钥)

一把钥匙加密,另一把钥匙可以打开。但不可以用同一把钥匙对数据进行加密和解密。

所以可以把公钥给别人,自己保留私钥。

浏览器可以用公钥对数据进行加密,再发送给服务端,服务器可以用私钥打开。

这样即使攻击者拿到了公钥和数据,也无法进行解密。

它们的流程是这样的:

R_23-04-09-22-10-25_80

但非对称加密也不是那么完美,这样虽然对浏览器传过来的数据做了加密,但是服务端返回的数据还是容易泄露,因为公钥都可以获取到,则都可以看到服务端返回的数据。另外非对称加密性能不行,效率比较低。

混合模式

为了解决上面的问题,有人就想出可以把上面的两种方法结合使用,用非对称加密传输对称加密的秘钥,这样就有了混合模式。

流程是这样的:

R_23-04-09-22-14-48_80

(最后是通过三个随机数公共创建一个新的秘钥来进行通信)

看似完美,但是依然无法阻止中间人攻击:

R_23-04-09-22-15-30_80

这个时候就需要找个第三方,证明服务端是好的服务端,这个第三方就是CA(全称:Certificate Authority)

数字证书

证书包含,服务端身份以及服务端的公钥。

这样就可以在混合加密的基础上,服务端通过证书来自证清白。

流程是这样的:

R_23-04-09-22-18-37_80

证书申请的过程

服务器生成公钥和私钥,然后给CA机构提供公钥、相关信息(公司及站点信息),或许还要一些money,然后CA机构会审核,通过后会颁发证书。

R_23-04-09-22-19-34_80

证书会包含:CA信息,CA签名,有效期,公钥,组织信息等信息,证书内容是明文的。

CA签名:用来验证证书有效性,哈希函数计算服务端的明文信息,得出信息摘要,然后用CA的私钥,对信息进行加密,加密后就变成了数字签名。

浏览器上验证CA证书的过程:

R_23-04-09-22-21-39_80

第一步,读取证书信息,然后用CA机构的哈希函数,计算得出信息摘要1,

第二步,读取数字签名,然后用内置的CA公钥,计算得出信息摘要2,

比对两份摘要,如果一致则证明证书有效。

实现基于权重的随机选择算法 学习笔记

实现基于权重的随机选择算法

今天我在做一款应用时,需要随机抽取问题,但是我不希望问题出现的概率是一样的,面对这种需求该如何解决呢? 于是我想到了在 Nginx 中,实现负载均衡时,可以给每个服务分别设置权重值,来实现自定义服务被...
记一次工商银行跨境汇款到新加坡 OCBC 学习笔记

记一次工商银行跨境汇款到新加坡 OCBC

如果还不知道如何开通境外银行账户的,可以看这篇文章: 国内就可以开通境外实体银行卡!新加坡华侨银行 OCBC 开户经验分享 第一次入金 OCBC,我用的招商银行境外汇款,手续费加电报费收了我 200,...
个人文档笔记知识库 设计笔记 终于上线了 学习笔记

个人文档笔记知识库 设计笔记 终于上线了

一直有做笔记的习惯,大部分内容是分享到 设计笔记 这个网站了。 但是有一个问题,就是有些文档比较系统,需要长期更新,频繁更新网站的文章显得就有点呆。 对于这种需要长期更新的文档,之前我都是在本地建一个...
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定