Https的前世今生

1、年前会议

马上要过年了,公司业务上的需求也少了很多,这不,王小二他们召开了一场技术会议,盘点年前能干点啥。

只见C哥写了一份清单,其中一项是全站升级https。

C哥说:https是一种趋势,但目前我们接口还是http的。appstore也一直要求使用https,从安全性以及appstore审核的角度来看,我们年前得全站升级https。有谁自告奋勇吗?

小二想了一下:我来做吧C哥,正好了解下https。

C哥:好,小二,那你接下来研究下https,然后有时间再给我们分享下。

小二:好的C哥,保证完成!

2、深藏不露张三胖

听说小二要做https,运维张三胖走到小二身旁。

张三胖:小二,听说你要做https?

小二:是啊,三胖哥,我们得全站升级https。你之前了解过吗?

张三胖:哈哈,我还真了解过,升级https是个不错的注意。

小二:三胖哥,那太好了,你有时间给我讲讲?我就不用花时间去查资料了。

张三胖:好,我现在正有时间,给你讲讲,也正好复习下。

小二:多谢三胖哥,今中午请你吃饭啊。

3、对称加密不足够

三胖:小二,假设你用http协议给你女朋友发一封私密消息。这样有没有泄密的风险呢?

小二:当然有了,http协议是明文传输,传输数据过程中的任何第三方都可以截获并篡改该明文。

三胖微微一笑:是的,我们画幅图表示下,你就知道信息被篡改多尴尬了,哈哈。

小二:啊?确实是,那这样太尴尬了。我女朋友不打死我...

三胖:其实用https就可以规避。

三胖:小二,你了解对称加密与非对称加密吗?

小二:了解一些。对称加密就是加密与解密的秘钥是相同的。而非对称加密就是公钥加密的内容,必须用私钥才能解密,私钥加密的内容,必须用公钥才能解密。

三胖:小二了解的还挺多嘛,其实https就是利用了对称加密与非对称加密的特性。但你要注意,对称加密的速度是非对称加密速度的100倍左右。

小二:三胖哥我明白了,那你用刚才的例子给我讲讲https的原理吧。

三胖:好,就用刚才的例子。对称加密速度很快,所以你跟你女朋友的数据传输最好用对称加密。

小二:可以啊,那我跟我女朋友就先约定好一个秘钥呗?

三胖:是的,我们再画张图表示你们的数据传输过程。

小二:是啊,胖哥,这样别人就没法截获我的信息了。

三胖:对。并且因为对称加解密的速度很快,对你们数据传输速度的影响微乎其微。但是,你怎么跟你女朋友沟通协商秘钥呢?

小二:这还不简单,我直接网上告诉他就可以啊。

三胖:哈哈,不可以。你明文通过网络传输的秘钥被人截取了怎么办?

小二:啊?确实是,别人截取秘钥后又可以篡改我的信息了。

三胖:这时候就需要用到我们的非对称加密来协商你们对称加密的秘钥了。

4、非对称加密解忧愁

三胖:小美生成自己的公钥和私钥,通信之前,她告诉你她的公钥就可以了,这个公钥因为是公开的,所以可以随意在网络中传输了。

小二:这样啊,我明白了C哥。我得到小美的公钥后,然后用小美的公钥,对对称加密的密码进行非对称加密后发给小美。小美再通过他的私钥解密后,就获取了我生成的对称加密的密码了。是不是?

三胖:对,就是这样的。但是还有一个头疼的问题,你怎么确保你得到的就是小美的公钥呢?假设中间人给你截获篡改了呢?

小二:嗯...这确实是个问题。中间人把他的公钥发给我,这样我就使用中间人的公钥加密我们对称加密的密码了,然后中间人再用他的私钥解密出我们对称加密的密码。这时候中间人已经截取了小美的公钥,然后再把我们对称加密的密码通过小美的公钥加密后发给小美...太可怕了,我们对称加密的秘钥就这样被窃取了。

三胖:其实抓包工具charles之所以能抓https的包,就是利用的你说的这个原理,一会我们再细说。那现在问题就变成了,你怎么确保你得到的公钥就是小美的。

小二:哎,真让人头疼...

三胖:你知道我们平时都有公证处吧?这个公证处是一个可信的结构,经他公证的东西,都是具有可信力度的。

小二:知道啊,前几天还看新闻说一个老太把他在帝都的一套房产通过公证处公证给了一个没有血缘关系的小伙。

三胖:那你想想,如果小美的公钥经过公证后,是不是就能证明这个公钥是小美的呢?

小二:当然能够证明。只是网络中存在这样的公证处吗?

三胖:还真存在这样的公证处,我们把网络中的公证处称为CA吧。不得不佩服前辈们,他们把一些可信的CA的证书都预先存在我们的电脑里了,证书包括CA的信息和CA的公钥。只要你电脑安装了系统,就安装了这些证书。来,你看看我电脑里默认安装的证书。

小二:哦哦,明白了,意思就说这些默认的CA证书是绝对可信的。

三胖:对,就是这个意思。所以,只要CA同时给小美颁发一个证书证明是小美就可以了。CA给小美颁发的证书中,含有小美的个人信息以及小美的公钥。同时,CA也会给小美颁发一个私钥。

你先把小美想象成百度,我们先来看CA给百度颁发的证书。

小二:也就是说,只要保证CA给小美颁发的证书能够安全传输到我这里来就可以了。

三胖:对,现在的问题就转换成了。小美的证书如何能够安全的传输到你这里?其实,CA给小美颁发的证书中,包含【小美的信息+公钥】、以及数字签名。 数字签名的内容是:使用CA私钥加密过的【小美的信息+公钥】的hash值。

小二:哦哦,我好像明白了。CA的证书包含CA的公钥以及CA的一些信息,并且CA的证书默认存储在我的电脑里了,那我就可以使用CA的公钥进行解密操作,从而验证小美的证书是否是正确的了。

三胖:对的。我们可以使用你电脑里CA的公钥解密小美证书里的数字签名,从而得到签名的hash值。然后,你再用同样的hash算法对【小美的信息+公钥】进行hash计算。如果小美证书里签名的hash值与你自己计算出来的hash值一致,就说明这个证书确实是小美的,否则就不是小美的证书。

小二:三胖哥,我算是明白了。https还真是麻烦,但也确实保护了我们的隐私。

三胖:对,有失必有得嘛!

小二:嗯嗯。我现在通过小美的证书安全的获取了小美的公钥。那我这儿随机生成一个对称加密的秘钥,这个对称加密的秘钥再通过小美的公钥加密后,就能安全的传输给小美了。

三胖:是,小美再用他的私钥解密,就获取了你们约定的对称加密的密码了。以后,你们就可以使用对称加密来传输数据,暗送秋波了,哈哈~

小二:三胖哥真是太厉害了,从此再也不用担心跟我女朋友聊天被恶搞了。

三胖:哈哈。你把你自己想成浏览器,把小美想成服务器。这就是整个https的传输流程。

小二:明白了,我画一下https在浏览器与服务器之间的运行流程,三胖哥你看下对不对。

三胖:不错不错,小二很厉害嘛,基本就是这个流程。

小二:没有没有,还得多谢三胖哥的指教啊,哈哈。

5、Charles抓取https包的原理

三胖:小二,我们知道charles抓包工具能够抓取https的包,你知道这是什么原理吗?

小二:这我还真不知道,按理说https是绝对安全的协议,内容不会被charles抓取啊。

三胖:你记不记得,使用charles抓https包的时候,需要在你手机上安装charles证书并且信任该证书

小二:对对,是有这一步操作。

三胖:就是这一步操作,可以使Charles抓取你的https包。我给你画个流程图你就明白了。

小二:原来是这样,这不就是我刚才说的问题嘛。那么就说明https不是安全的协议了?

三胖:不是的。因为你安装并信任charles证书,是你自己主动的操作,也可以说是你自己主动泄密的结果。如果你不信任该charles证书,那么数据就不会被传输,连接会被直接中断。所以https还是安全的协议。

小二:我明白了,确实是这样,多谢三胖哥。

Happy Done

https的原理明白了,接下来的事情自然就水到渠成了。

小二列出了接下来要做的事情: 1、向CA(公证处)申请自己网站的证书; 2、修改代码里静态资源的http链接为https链接; 3、修改ajax里面的http链接为https链接; 4、将证书部署在nginx上; 5、自测完成。

按照这个列表,小二一步步的顺利完成了。

最终,https上线完成,惬意的享受午后的阳光吧,happy done~


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/539494.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

combobox控件 如何把三角形放大_初中数学|全等三角形全部知识点总结

今天,琦老师为大家整理了[初中数学重要考点,全等三角形的全部知识点],希望帮助大家中考数学快速提分( #小学数学#初中数学#数学)除了图片内容,大米君也为大家分享[如何灵活运用这些知识点的方法]大家记得跟着做起来哦~提高复习效果…

Spring中引入其他配置文件

原文:http://www.cnblogs.com/LiuChunfu/p/5605473.html ------------------------------------------------------------------------------ 一、引入其他 模块XML   在Spring的配置文件,有时候为了分模块的更加清晰的进行相关实体类的配置。 比如…

oracle不要重复记录,Oracle中去重复记录 不用distinct

用distinct关键字只能过滤查询字段中所有记录相同的(记录集相同),而如果要指定一个字段却没有效果,另外distinct关键字会排序,效率很低 。select distinct name from t1 能消除重复记录,但只能取一个字段,现在要同时取…

miui游戏驱动程序偏好设置_米粉必看:小米官方教你如何关闭 MIUI 广告 - 小米,MIUI...

IT之家 11 月 9 日消息 小米的 MIUI 在用户心中的口碑一直是比较好的,但该系统也并非完美,被吐槽的较多的一个点就是系统内的广告比较多。今天,小米官方微博 小米服务那些事 分享了几个能够减少 MIUI 广告的方法,米粉不妨了解一下…

Spring Cloud Zuul网关 Filter、熔断、重试、高可用的使用方式。

时间过的很快,写springcloud(十):服务网关zuul初级篇还在半年前,现在已经是2018年了,我们继续探讨Zuul更高级的使用方式。 上篇文章主要介绍了Zuul网关使用模式,以及自动转发机制,但其实Zuul还有更多的应用…

oracle 9 插入日期,oracle date日期类型 精析

一、date1.date、sysdate格式说明展示date类型,展示格式既可以为:YYYY/MM/DD,也可以为YYYY/MM/DD HH24:MI:SS;其存储格式只有一种:YYYY/MM/DD HH24:MI:SS展示格式一:当你只存年月日时,date实际存…

为什么使用NativeJdbcExtractor

原文:http://blog.csdn.net/hehexiaoyou/article/details/21019171---------------------------------------------------------------------------有时候必要会对数据库clob、 blob数据型进行操作,再加上spring 环境不得不要启用NativeJdbcExtractor 来…

CentOS 7.1下KVM的安装与配置

由于没有物理机可用,在自己的VMware Workation中CentOS 7搭建完成。 首先查看VMware Workation是否支持虚拟化,把红框内打钩即可。 虚拟化开启并安装CentOS系统,建议CentOS安装64bit。我的环境用的是CentOS 7。进入系统,首先查看服…

软件生成问候图片_这些社交软件你玩过几个?

提到聊天软件,我们的手机肯定安装有微信QQ,不过微信QQ都是主打熟人社交,而下面几个软件都是陌生人社交。这些社交软件,总有一款你安装过。注意,非按排名介绍。第一款:陌陌陌陌是一款基于地理位置的开放式移动视频社交应…

通过Sqoop实现Mysql / Oracle 与HDFS / Hbase互导数据

下文将重点说明通过Sqoop实现Mysql与HDFS互导数据,Mysql与Hbase,Oracle与Hbase的互导最后给出命令。一、Mysql与HDFS互导数据环境: 宿主机器操作系统为Win7,Mysql安装在宿主机上,宿主机地址为192.168.66.963台虚拟机操作系统为Ubu…

Android5.0新控件

谷歌在推出Android5.0的同时推出了一些新控件,Android5.0中最常用的新控件有下面5种。 1. CardView(卡片视图) CardView顾名思义是卡片视图,它继承FrameLayout。它是一个带圆角的背景和阴影FrameLayout。CardView被包装为一种布局…

python中要使用导入全部的是什么符号-在python格式字符串中使用标点符号

这是因为您可以使用格式迷你语言来访问对象的属性.例如,我经常在自己的自定义类工作中使用它.假设我为每台需要处理的计算机定义了一个类. class Computer(object): def __init__(self,IP): self.IP IP 而现在我想对整个计算机做一些事情 list_comps [Computer(name,"19…

oracle 读懂10046视频,10046、10053、实操记录

10046是一个Oracle的内部事件(event),通过设置这个事件可以得到Oracle内部执行系统解析、调用、等待、绑定变量等详细的trace信息,即帮助我们解析一条/多条SQL、PL/SQL语句的运行状态,这些状态包括:Parse/Fetch/Execute三个阶段中…

linux重定向文件被修改后,Linux服务器修改.htaccess文件实现301重定向

出于 SEO、PR 值传递、网址转换的目的,在网站初建和网站迁移时我们都需要使用 301 重定向,通常包括域名对域名,目录对目录和一个独立网址对另一个独立网址的重定向。在虚拟主机上作 301 重定向,最常用的方法有2种:第一…

Druid使用起步—在javaWeb项目中配置监控

原文章:http://my.oschina.net/u/568779/blog/152813 ---------------------------------------------------- druid wiki 当我们在javaWEB项目中使用到druid来作为我们的连接池的时候,一定不会忘了添加监控功能。下面我们就来看一下,在一个…

[译] 想帮助用户做决定?你的APP可以这样设计!

原文地址:Design your app for decision-making原文作者:Jeni译文出自:掘金翻译计划本文永久链接:github.com/xitu/gold-m…译者:PTHFLY校对者:ryouaki想帮助用户做决定?你的APP可以这样设计&am…

ip地址管理系统_门禁监控管理系统项目总结

门禁监控管理系统项目总结1、门禁管理设备(IFACE802) 16台 ,都有独立的网线到控制的房间。IP地址从 192.168.1.101--192.168.1.116。(地下一层 新家的最后一间是在附近的一个房间接的网线。一层的大门 有1台控制器和IFACE802 部署了2根网线)2、门禁控制的IP地址 192.168.1.1173…

linux mount命令衔接,Linux mount命令详解:挂载Linux系统外的文件

Linux mount命令详解:挂载Linux系统外的文件《Linux挂载》一节讲到,所有的硬件设备必须挂载之后才能使用,只不过,有些硬件设备(比如硬盘分区)在每次系统启动时会自动挂载,而有些(比如 U 盘、光盘)则需要手动进行挂载。…

targetFilterLifecycle的作用

targetFilterLifecycle的作用&#xff0c;有需要的朋友可以参考下。 在web.xml中进行配置&#xff0c;对所有的URL请求进行过滤&#xff0c;就像"击鼓传花"一样&#xff0c;链式处理。 配置分为两种A和B。 A:普通配置 在web.xml中增加如下内容&#xff1a;<fi…

平板电脑可以插u盘吗_有手机还需要平板电脑吗 酷比魔方iplay30平板电脑评测

原标题&#xff1a;有手机还需要平板电脑吗 酷比魔方iplay30平板电脑评测一、前言&#xff1a;前段时间我们一帮60岁左右的退休老头、老太太到农家乐去玩&#xff0c;玩累了就开始喝茶&#xff0c;一坐下来&#xff0c;人人都把手机掏出来&#xff0c;看着他们看手机的姿势&…