HTTPS的工作过程

一、HTTPS是什么

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

"运营商劫持"

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

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

二、工作过程

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

对称加密

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

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

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

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

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

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

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

非对称加密

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

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

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

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

中间人攻击

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

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

证书

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

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

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

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

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

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

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

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

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

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

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

相关推荐
酒神dnspup10 小时前
CDN 回源检测怎么做?用 DNSPup 验证节点命中、源站暴露与多地可用性
运维·服务器·网络·网络协议·tcp/ip
酒神dnspup12 小时前
Tcping 端口连通性检测教程:用 DNSPup 判断防火墙、监听与线路故障
网络·网络协议·tcp/ip·ip·dnspup
虎王物联15 小时前
ESP32 HTTP客户端开发实战:TLS加密通信与RESTful API集成方案
http·restful·iphone
小僧景贤18 小时前
嵌入式网络协议 | MQTT、CoAP与HTTP协议深度解析(原理、差异、工程选型、代码实操)
mqtt·http·物联网协议·coap·网络协议选型
CDN36020 小时前
360CDN发布HTTP/3(QUIC)弱网加速方案:实测首屏提速40%,彻底终结移动端接口超时与频繁断连
网络·网络协议·http
SWAGGY..21 小时前
【C++ 初阶】:(12)深入理解C++ stack:容器适配器、底层容器与算法实战
网络·网络协议·rpc
我星期八休息21 小时前
Linux—五种IO模型与非阻塞IO
linux·运维·服务器·网络·数据库·网络协议
oooo_z1 天前
WebSocket实时行情推送API实战:用iTick搭一个盯盘小工具
网络·websocket·网络协议
翼龙云_cloud1 天前
阿里云国际版代理商:OSS自定义域名绑定与HTTPS配置排障教程
数据库·阿里云·https·云计算