用了 HTTPS,没想到还是被监控了!_CSDN云计算的博客-程序员秘密

技术标签: 网络  路由器  http  https  ssl  

48df2d5f1f7a91aa04da6b5e873ac0ff.gif

作者 | 轩辕之风

来源 | 编程技术宇宙

大家好,我是轩辕。

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

c6b0c578ac266ccee9746ba1c83bcf8b.png 631fccfb18bb1f42f0ba223a1e62d118.png

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

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

0943c6408272bc90c86923277a79d092.png

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

5e1111714b49ea3d06a907ad53256921.png

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

8448abb4efee9eed1e232b434a26992d.png

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

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

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

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

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

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

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

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

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

HTTPS为什么安全呢?

d5a9543a4abb2183cce58eca1bd6d806.png

b929940148e98fa396212d4448530b06.png

因为数据加密了啊~

04ce0eb0be6ac53a32076d7bf3ca90b0.png

ac5a1b54ea2a8cf3ee922cb203d992ab.png

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

d4028f2cec7ac9b0361152bf4cd64507.png

093a775aa3c1d6cea45e04a7762b00e1.png

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

2585242e871da2f959b25a6f3c004eb6.png

9e563bb2d7b385689f7856e20e8ba1f6.png

那随机数怎么传输的?

c4afccaa46610a353302a76bf81876b1.png

90b7ed0eb6298895e3097a6e4ae6bcc8.png

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

e370217021287c79f102b0d6794c5b17.png

45abc502cf46e1250ebf64f905c4efae.png

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

d7e197ca053176874bd1e65c995a13c9.png

252bbc6b1c14742a2931d4dfeb6cc52d.png

有证书来证明服务器身份

24a4aa3ce61bd6caca5478c9e9ccaa65.png

dfdcd06f8ce1943d4b9fcead323becd9.png

证书万一是假的呢?

cc9199c5236b944b72d38863ea1ac326.png

8fa3d3181c8f7d69d31e2c9fbc7a5bc5.png

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

5dfc9fc2526568e95c2967c95fbc2d7a.png

bc622cf3a01225c68f725a93524396f4.png

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

96bd957365c3a57625d0c6a60c2c6232.png

c3e70788910a740cb36352edf15f9976.png

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

f5687757d08136a634ff40378188fb41.png

a646c5bec63e2d9c67cbd034ce113349.png

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

73566952660e71d0d3543d11bdbc299a.png

19797ca6638c3e1cc2b36aaa5e570a02.png

ef09b68aada605d975b1cfc7df65a9ea.png

d3584703a1f20f688bd399d398ea7773.png

5a4a2048e475f6a32ae90df03fb40ec1.png

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

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

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

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

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

b4ed9f6d119c6f9674af8b843e534a93.png

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

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

e68de4dd54a835e935c0c7e1ed73ba89.png

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

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

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

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

94b80018981dc00d8ce1fc6189679f0d.png

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

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

3fe6b8423e067f8c0cd54925d43ff665.png

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

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

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

如果是,那恭喜你了~

2e304dd6432735781d13771c9c158226.gif

往期推荐

低代码发展专访系列之八:低代码平台能够打破企业「应用孤岛」现象吗?

Medusa又一个开源的替代品

数字孪生+交通,到底有啥用?

快速搭建实验环境:使用 Terraform 部署 Proxmox 虚拟机

0cfbbf24094c33736c9f9706b993cd6d.gif

点分享

24312f78cfbd05c592b27aff8d8fe3ca.gif

点收藏

aa1ff0ba21c073015ee79211c88a1f39.gif

点点赞

d4a780b89007eab7762e9c64ab77652b.gif

点在看

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/FL63Zv9Zou86950w/article/details/122374712

智能推荐

SAP BW: 系统连接遇到的一些问题_LINGO_Unitas的博客-程序员秘密

QAS是直接从Product做Client Copy出来的,所以遇到诸多问题。       A.  Transfer structure prefix for source system T90CLNT090 is not defined            我激活DSO的时候出现以上错误。   从网上找到了解决的方法:1. Go to WE20 an

vue+Element搭建后台管理系统(一)快速搭建vue项目框架_vue快速搭建管理系统_萌小白菜的博客-程序员秘密

前段时间公司要开发一个后台管理系统,思考了半天,决定选用vue这一框架,其实是公司强制要求的,哈哈,好了,别的不多说了,今天主要是帮助大家快速搭建起vue项目。第一步,安装node和npm百度搜索关键字'node',就可以了,然后根据电脑的操作系统,直接下载就可以了具体的安装步骤就不细说了,这个网上有很多,实际上一直点下一步就可以了,哈哈现在最新的node里面已经包含有npm了,所...

Java:蓝桥杯 算法提高——输出九九乘法表_七娃zhang的博客-程序员秘密

蓝桥杯 算法提高——输出九九乘法表问题描述编制程序,按照下述格式打印九九乘法表。输出样例:Nine-by-nine Multiplication Table-------------------------------------- 1 2 3 4 5 6 7 8 9-------------------------------------- 1 1 2 2 4 3 3 6 9 4 4 8 12 16 5

linux:int main(int argc,char *argv[],char *envp[])_WEIv.的博客-程序员秘密

int     main(   int   argc   ,   char   *argv[ ]   ,   char   *envp[ ]   ) 详解: main函数的参数列表保存了输入参数的信息:第一个参数argc记录了输入参数的个数。第二个参数是字符串数组的,字符串数组的每个单元是char*类型的,指向一个c风格字符串,arg[ ]指向的数组中至少有一个字符指针,即ar

MyBatis 映射文件之动态 SQL 总结_动态sql实验总结_一线大码的博客-程序员秘密

文章目录1. if2. choose3. where4. set5. foreach5.1. 集合遍历5.2. 批量执行5.2.1. MySQL5.2.2. Oracle6. 特殊符号6.1. 转义字符替换6.2. CDATA 部件包含1. if通过title和author两个参数进行可选搜索。<select id="findActiveBlogLike" resultType="Blog"> SELECT * FROM BLOG WHERE state = 'ACTIVE' &

flutter截取字符串_Flutter学习笔记_Haoqiang Fan的博客-程序员秘密

全部章节的笔记:1.使用var声明变量,可赋予不同类型的值。如果不初始化变量的值,则默认是null。赋值以后变量的数据类型就已经确定。2.使用final声明一个只能赋值一次的变量。3.使用const声明常量。使用const声明的必须是编译期常量(在编译的时候就能确定的值)。4.isNaN是否是非数字,isEven是否是偶数,isOdd是否是奇数。abs()绝对值,round()四舍五入,floor...

随便推点

有线耳机与蓝牙耳机的连接监听(插入、拔出、处于连接状态)_audiomanger 获取蓝牙耳机状态_阳光_微风_一切刚刚好的博客-程序员秘密

有线耳机与蓝牙耳机的连接监听(插入、拔出、处于连接状态)author —Dabin     项目要做插入耳机的判断进行一些逻辑操作,刚开始只写入了,插入或者拔出的监听,但是呢,耳机处于连接状态的改怎么判断呢,把声音管理器给忘记了,搜索了一下,代码如下,注释很清楚了。在这记录一下。package com.example.dabin.headset;import androi...

Centos 7.0下运行yum,返回bash: yum: 未找到命令.._dujjian的博客-程序员秘密

解决: -bash: yum: command not found错误最近在学习Linux,今天不小心在CentOS7系统下把yum命令给删除了,于是百度了好几篇文章,实话照他们的操作去做,实在不敢说啥,只得自己手动了.......步骤如下第一步:       http://mirrors.163.com/centos/6/os/x86_64/Packa

js Date 类型 的取值、计算、格式化 与 moment.js_moment.js date类型_Fanstorm丶的博客-程序员秘密

js Date 类型 的取值、计算、格式化 与 moment.js前言笔者工作多年,作为一个爱思考的程序员,一直在想一个问题:究竟怎样才可以让自己变的更强。。对不起各位,说的太中二了,让我们重新来一遍 : 究竟怎样才可以提高自己的工作能力,提高自己的职业技能,究竟怎样才可以让自己更快、更快的成长。古人曾经云过,灵光总会在放大的时候一闪而过,而你的任务,就是抓住它,记录它,思考它,并且,去做...

html js打开一个新的页面_html js打开新页面___Jun__的博客-程序员秘密

1.在同当前窗口中打开窗口baidu等效js代码window.location.href="http://www.baidu.com"; 2.在另外新建窗口中打开窗口baidu等效于js代码window.open("http://http://www.baidu.com");

python按格式写文件_python按格式写文件 python怎么以追加的方式写文件_不知名德州小女子的博客-程序员秘密

Python 读写文件并按照固定格式输出有两个csv files,分别是08和09年的数据,里面含有school ID和对应的stu结果打印出来还是输出到文件 中?其实所谓没有喜欢的人,都是因为心里有一个不能忘记的人。python怎么以追加的方式写文件黑夜,铭记起初的誓言,低头转身,看不见的身影,让回忆离去,不再沉沦此生;往事成烟似沙从指尖留,又一轮回,那跳跃在指尖上的承诺,渐行渐远。python...

一个开发人员的项目烦恼—— 来自项目管理群的讨论_weixin_34233679的博客-程序员秘密

poppy-software engineer-bj 说:开始啦心无痕-要饭儿-bj 说:?》susan- pa-襄樊 说:欢迎poppy-software engineer-bj 说:我开始讲了,项目中的烦恼心无痕 -要饭儿-bj 说:好的,欢迎。romeo,网络解决方案专家,IT~达人~电联13911514882 说...

推荐文章

热门文章

相关标签