用了HTTPS,没想到还是被监控了!

👇👇关注后回复 “进群” ,拉你进程序员交流群👇👇

作者丨轩辕之风O

来源丨编程技术宇宙(ID:xuanyuancoding)

大家好,我是轩辕。

上周,微信里有个小伙伴儿给我发来了消息:

e3181ee455b35caae69be4d88d608f11.png 45e1924d28a33e1bde2c1fd85b9922da.png

随后,我让他截了一个完整的图,我一瞅,是HTTPS啊!没用HTTP!再一瞅,是www.baidu.com啊,不是什么山寨网站!

我瞬间明白了些什么,让他点击了一下浏览器地址栏中那个表示安全的小锁标志,查看了一下网站使用的HTTPS证书。

267a5a3355ceeeb971b879766e11ec35.png

果然不出我之所料,证书不是官方的,官方的证书长这样:

b5d93e1d9e2e107290a72f2be904af41.png

而那个假的证书是他们公司签发的,看来,他们公司开始对HTTPS流量做解析了,这家伙瞬间瑟瑟发抖···

4f68c3befb8a601215fcffc43da5c951.png

今天就来跟大家聊一下:HTTPS真的安全吗?

现如今大家每天上网基本上看到的都是使用了HTTPS的网站,有时候特意想找一个HTTP的网站来让新同学练习抓包分析都不好找。

但在几年前,差不多我刚刚开始毕业工作(2014年)的时候,情况却不是这样的,网络上还有大量使用HTTP的网站。

大家知道,HTTP是超文本传输协议,数据内容在网络中都是明文传输的,非常不安全。同在一个宿舍里的同学,随便搞一个中间人劫持就能监听到你浏览了什么视频学习网站。

不仅如此,上网链路中包括寝室路由器在内的各级网络设备都可以探知你的数据,甚至给你插入小广告(其实这种现象现在依然存在,尤其是很多医院、学校的网站,还是很多都是用HTTP,特别容易粘上小广告),一不小心就跳到了广告页面,真是防不胜防。

不久,网站HTTPS化的浪潮很快打来,通过加密这一最简单直接的办法,将浏览器上网过程中传输的数据进行加密保护,上网内容的安全性得到了极大的提升。

我之前写过一篇故事深入浅出的描述了HTTPS的工作原理,还不懂的小伙伴儿可以学习一下,我经常也会在面试中考察候选人这个问题,这可以迅速帮助我知道对方对HTTPS的了解程度。

为了一个HTTPS,浏览器操碎了心···

咱们通过下面的快问快答环节来简单总结一下。

HTTPS为什么安全呢?

470650ca01fd52ad927efbbfa885e403.png

34802eafcde8dd7a083e1501d15c91ca.png

因为数据加密了啊~

baaeac62a012a591fd30b1688eb1b98c.png

afec8c53c1e8c7993b34f5ef3953b00e.png

那数据加密的秘钥怎么来的?

a5ca2b1901eb32ca1cfab5ce7052205a.png

e4b08126ed1a6b9a9f8ef8e6edeea870.png

是双方通过相同的随机数计算出来的。

ea3fb926e0505ccd5182eefb37b4cba8.png

4ee97aa44101bf37023c1e9d29d00394.png

那随机数怎么传输的?

433b8f51168f337c5d1b0526e75dee8d.png

6b66fecc541e3dc484a96ee4919a7cff.png

使用非对称加密传输的,浏览器使用服务器提供的公钥加密,只有服务器使用自己的私钥才能解开,别人解不开。

f14838b3793c677d614192fbf7e6b52a.png

324f5249db66689efc20321347fa8cb3.png

你怎么知道那是服务器的公钥,万一是别人的,中间人攻击呢?

06d5caecad1adc389fc5606372f04c97.png

bd38724a0c36168981481068a354a1f5.png

有证书来证明服务器身份

3456854fd42ca9e2914a3dba1acc86f6.png

9cbfd0e30065f62a15c49b05502e1766.png

证书万一是假的呢?

213c44e5a902f57645e615cce3aca37b.png

21e5174f2cb712056b7accbc48378de1.png

不可能,假的证书不是受信任的机构签发的,浏览器会验证通不过。

8a61a30ab88f4424bbf0443f918aedb8.png

46765bc524c292425d79a9a6df452184.png

那浏览器怎么知道证书的签发机构是不是受信任的?

b73d45de6256e5b4d67d35313aed5133.png

90f7654b331f13c8b2fe5940c528db6f.png

因为受信任机构的根证书安装到了系统中,你总得相信微软吧!

991a7e1c60932f92d6232946098de171.png

bf620cb6d750085c7ec34fb2a5e464a5.png

要是假的根证书被安装进了系统咋办?

f9b6f205f51a95d2e83192323a3bcbf8.png

d51a85fa801a54d6888d70f7ffa55896.png

14f0aeae11e2c10be36921c2fbac42d5.png

116952779fdf609c5051436a04cc3392.png

84ed1ef16e3e511d9f219a7e2bf5da10.png

看到了吧,HTTPS能够安全的基石是非对称加密,非对称加密建立的前提是对方真的是对方,如果这一个前提不成立,后面的一切都是假的!

网站服务器使用HTTPS进行通信时,会提供一个用于证明身份的证书,这个证书,将会由某个受信任的机构签发。

浏览器拿到这个证书后,会校验证书的合法性,去检查证书的签发机构是不是受信任的。

那如何去检查签发机构是不是受信任的呢?

答案是继续检查签发机构的证书,看看是谁给他签发的,一直这样追溯,直到找到最终的签发者,看看最终的签发者的证书是不是安装在操作系统的受信任的根证书列表中。

12f67dc80e77b7aba4221ea039537f8f.png

是不是已经晕了?没关系,我们来用百度的那个证书为例,看一下这个过程,你就知道什么意思了。

你可以通过点击证书路径tab页面查看证书的签发链条:

adafcd9b3f6a14140095ab2f632e3736.png

通过这个树形结构图,可以清晰地看到:

baidu.com这个域名使用的证书,是由名为GlobalSign Organization Validation CA - SHA256 - G2的颁发者签发的。

而这个颁发者的证书,又是由GlobalSign Root CA - R1签发的。

浏览器拿到这个最顶层的签发证书后,去操作系统安装的受信任的根证书列表中一找,嘿,还真让它找着了!

e9ef0378e2824e2b7b285f9841005124.png

于是,浏览器信任了这个证书,继续接下来的通信过程。

如果找不到,浏览器就会弹出不受信任的消息,提醒用户要当心了!

4d25d87d12d6661288ce2dad66c7dd48.png

而如果,有人在你的电脑中安装了一个自己的根证书进去,骗过浏览器,这一切安全的根基也就倾覆了。

而文章开头那个小伙伴儿之所以弹出了那个窗口,多半是根证书还没安装进去,就开始了HTTPS劫持。因为重启之后,便再也没有这些提示信息,一切如往常一样风平浪静,只不过上网的流量已经被公司悉数掌握。

看到这里,还不赶紧点开浏览器地址栏的那把锁,看看证书的签发机构是不是你们公司?

如果是,那恭喜你了~

11d186df1b245b48ef1af905de64d456.png

最后,给大家留一个思考题:微信会受到这种HTTPS劫持的影响吗? 欢迎在评论区发表你的看法!

-End-

最近有一些小伙伴,让我帮忙找一些 面试题 资料,于是我翻遍了收藏的 5T 资料后,汇总整理出来,可以说是程序员面试必备!所有资料都整理到网盘了,欢迎下载!

e8a01be290288bfbda32950b9440e87f.png

点击👆卡片,关注后回复【面试题】即可获取

在看点这里6ef0738a1443d9834c3537a2891e0053.gif好文分享给更多人↓↓

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值