HTTPS的工作过程

一、HTTPS是什么

HTTPS是⼀个应⽤层协议.是在HTTP协议的基础上引⼊了⼀个加密层(SSL/TLS),HTTP协议内容都是按照⽂本的⽅式明文传输的.这就导致在传输过程中出现⼀些被篡改的情况.

"运营商劫持"

由于我们通过网络传输的任何的数据包都会经过运营商的网络设备(路由器,交换机等),那么运营商的网络设备就可以解析出你传输的数据内容,并进行篡改。

不仅是运营商,黑客也会对此类信息进行攻击,因此,明文传输风险极大,HTTPS就是在HTTP基础上进行加密,从而保护用户的信息安全。

二、工作过程

整体分为两大类:对称加密非对称加密

对称加密

对称加密通过一个同一个"密钥",把明文变成密文。至于密钥的生成,就依据不同的规则设置了。

每个客户端的密钥都应该是不一样的,如果使用统一的密钥,黑客也就容易拿到了。

但是,服务器将要保存每个客户端对应的密钥,这是一个很麻烦的事情,代价极大。

因此,比较理想的做法是当服务器与客户端建立连接的时候,商定好使用的密钥。

但这又会引发一个新问题:

把密钥明文传送的话,黑客也会拿到,那么就需要对密钥进行加密,就得再发送key2,然后对key2加密......

这种方式显然也是行不通的。

非对称加密

为了解决对称密钥面临的风险,引入非对称加密。

非对称加密要用到两个密钥,一个"公钥",一个"私钥",这两个钥匙是配对的,缺点是运算速度非常慢,比对称密钥还慢上很多。

这里的公钥所有设备都能拿到,但是解密的私钥只有服务器有,这样就把对称加密的过程加了层保护。这样看似很安全了。

但上述的过程存在重大隐患。

中间人攻击

黑客自己生成一对公钥私钥,把客户端拿到的服务器换成自己的,这样就能拿到客户端的对称密钥,然后通过服务器的公钥加密,这样就能混入客户端与服务器的会话中。

因此,需要一个校验机制来让客户端判断公钥是否来自服务器。

证书

服务器向可信任的第三方机构申请证书,需要提交材料,包括服务器的域名之类内容,然后服务器依据进行审查,通过后给服务器颁发证书,类似于一个结构体,里面包含颁发证书的机构、证书的有效期、服务器的公钥,服务器的域名等,然后通过机构的私钥进行加密生成一个数字签名,实际上就是一个被加密的校验和。

这个证书在服务器搭建的时候就申请好。因此客户端就需要验证证书:

校验过程:客户端拿到证书后,根据证书里的信息使用同样的算法再次计算校验和,记为a。

通过认证机构的公钥解密数字签名得到第二个校验和,记为b。

比较a和b,如果不同,证书无效,即中间被人修改过。可能遭到第三方攻击。

如果客户端拿到的公钥是黑客生成的呢?

在安装操作系统时,会内置一些知名第三方认证机构的公钥。所以拿到的公钥是安全的。

如果黑客直接修改证书里的公钥呢?

那么计算出的校验会改变,系统会提示网站不安全

如果黑客自己申请一个证书来替换服务器给的证书呢?

证书里包含服务器域名,黑客申请的域名肯定是与你要访问的服务器是不同的,这样会这导致在校验时发现域名不匹配

相关推荐
隐擎fox1 小时前
高性能网络爬虫架构设计:基于 Python 的长连接复用与分布式会话池调度实践
分布式·python·网络协议·tcp/ip·高并发·网络爬虫、
IT摆渡者2 小时前
1panel 配置申请手动解析网站SSL证书
服务器·网络协议·ssl
易岳群3 小时前
物联网 MQTT 方案:服务端如何通过 MQTT 生命周期维护客户端设备状态
物联网·网络协议
2501_937860947 小时前
网络核心|OSI七层、TCP/IP五层模型,封装和分用详解
网络·网络协议·tcp/ip
ControlRookie8 小时前
第23篇_源码加更 05|HTTP Server、连接实例和诊断数据
http·codesys·plc通信·开源源码
宵时待雨9 小时前
linux笔记归纳18:传输层协议TCP
linux·网络·笔记·网络协议·tcp/ip
captain3769 小时前
▲网络原理(1)-UDP
网络·网络协议·tcp/ip
开开心心就好11 小时前
清理此电脑网盘图标工具,开源免费好用
网络·网络协议·tcp/ip·智能手机·电脑·scala·erlang
企业数字化笔记12 小时前
AI写的网站一直自动跳转怎么办?301、302和HTTPS重定向排查
网络协议·http·https
IT摆渡者13 小时前
1panel 针对HTTP自动续签SSL网站证书
网络协议·ssl·openresty