马上要过年了,公司业务上的需求也少了很多,这不,王小二他们召开了一场技术会议,盘点年前能干点啥。
只见 C 哥写了一份清单,其中一项是全站升级 https。
C 哥说: https 是一种趋势,但目前我们接口还是 http 的。appstore 也一直要求使用 https,从安全性以及 appstore 审核的角度来看,我们年前得全站升级 https。有谁自告奋勇吗?
小二想了一下:我来做吧 C 哥,正好了解下 https。
C 哥:好,小二,那你接下来研究下 https,然后有时间再给我们分享下。
小二:好的 C 哥,保证完成!
听说小二要做 https,运维张三胖走到小二身旁。
张三胖:小二,听说你要做 https?
小二:是啊,三胖哥,我们得全站升级 https。你之前了解过吗?
张三胖:哈哈,我还真了解过,升级 https 是个不错的注意。
小二:三胖哥,那太好了,你有时间给我讲讲?我就不用花时间去查资料了。
张三胖:好,我现在正有时间,给你讲讲,也正好复习下。
小二:多谢三胖哥,今中午请你吃饭啊。
三胖:小二,假设你用 http 协议给你女朋友发一封私密消息。这样有没有泄密的风险呢?
小二:当然有了,http 协议是明文传输,传输数据过程中的任何第三方都可以截获并篡改该明文。
三胖微微一笑:是的,我们画幅图表示下,你就知道信息被篡改多尴尬了,哈哈。
小二:啊?确实是,那这样太尴尬了。我女朋友不打死我...
三胖:其实用 https 就可以规避。
三胖:小二,你了解对称加密与非对称加密吗?
小二:了解一些。对称加密就是加密与解密的秘钥是相同的。而非对称加密就是公钥加密的内容,必须用私钥才能解密,私钥加密的内容,必须用公钥才能解密。
三胖:小二了解的还挺多嘛,其实 https 就是利用了对称加密与非对称加密的特性。但你要注意,对称加密的速度是非对称加密速度的 100 倍左右。
小二:三胖哥我明白了,那你用刚才的例子给我讲讲 https 的原理吧。
三胖:好,就用刚才的例子。对称加密速度很快,所以你跟你女朋友的数据传输最好用对称加密。
小二:可以啊,那我跟我女朋友就先约定好一个秘钥呗?
三胖:是的,我们再画张图表示你们的数据传输过程。
小二:是啊,胖哥,这样别人就没法截获我的信息了。
三胖:对。并且因为对称加解密的速度很快,对你们数据传输速度的影响微乎其微。但是,你怎么跟你女朋友沟通协商秘钥呢?
小二:这还不简单,我直接通过网络告诉他就可以啊。
三胖:哈哈,不可以。你明文通过网络传输的秘钥被人截取了怎么办?
小二:啊?确实是,别人截取秘钥后又可以篡改我的信息了。
三胖:这时候就需要用到我们的非对称加密来协商你们对称加密的秘钥了。
三胖:小美生成自己的公钥和私钥,通信之前,她告诉你她的公钥就可以了,这个公钥因为是公开的,所以可以随意在网络中传输了。
小二:这样啊,我明白了 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 在浏览器与服务器之间的运行流程,三胖哥你看下对不对。
三胖:不错不错,小二很厉害嘛,基本就是这个流程。
小二:没有没有,还得多谢三胖哥的指教啊,哈哈。
三胖:小二,我们知道 charles 抓包工具能够抓取 https 的包,你知道这是什么原理吗?
小二:这我还真不知道,按理说 https 是绝对安全的协议,内容不会被 charles 抓取啊。
三胖:你记不记得,使用 charles 抓 https 包的时候,需要在你手机上安装 charles 证书并且信任该证书?
小二:对对,是有这一步操作。
三胖:就是这一步操作,可以使 Charles 抓取你的 https 包。我给你画个流程图你就明白了。
小二:原来是这样,这不就是我刚才说的问题嘛。那么就说明 https 不是安全的协议了?
三胖:不是的。因为你安装并信任 charles 证书,是你自己主动的操作,也可以说是你自己主动泄密的结果。如果你不信任该 charles 证书,那么数据就不会被传输,连接会被直接中断。所以 https 还是安全的协议。
小二:我明白了,确实是这样,多谢三胖哥。
https 的原理明白了,接下来的事情自然就水到渠成了。
小二列出了接下来要做的事情: 1、向 CA(公证处)申请自己网站的证书; 2、修改代码里静态资源的 http 链接为 https 链接; 3、修改 ajax 里面的 http 链接为 https 链接; 4、将证书部署在 nginx 上; 5、自测完成。
按照这个列表,小二一步步的顺利完成了。
最终,https 上线完成,惬意的享受午后的阳光吧,happy done~
1
jadeity 2018-01-31 13:39:08 +08:00
然后那个黑客自己加入到 CA 当中了。
|
2
est 2018-01-31 13:43:37 +08:00
拉倒最后,果然看到广告了。
|
3
affyun 2018-01-31 13:44:35 +08:00 via Android 1
你来错地方了
|
4
slgz 2018-01-31 13:50:43 +08:00
正打算全站 HTTPS 学习了。
|
5
ericliu001 OP @est 好吧,我觉得适当的推广下公众号是正常的,又不图钱不图利的...
|
6
ericliu001 OP @affyun 因为末尾有公众号推荐?
|
7
ericliu001 OP @jadeity 哈哈,好像一个 CA 被黑客入侵了,然后莫名签发了 400 张左右的证书。随后被浏览器、操作系统直接拉黑了,然后这个 CA 就倒闭了
|
8
ericliu001 OP @slgz 我也是最近才整理了下,有问题可以在这里回复交流
|
9
sobigfish 2018-01-31 14:20:00 +08:00 3
你这文章在 V2EX 至少晚(火星)了 1 年😂
|
10
sobigfish 2018-01-31 14:23:40 +08:00
https://www.sov2ex.com/?q=https 看看前几个帖子的日期
/t/258850 Bobchengbin 于 2016-02-24 11:49:55 发表,共计 74 个回复 /t/224348 Wilddog 于 2015-09-28 13:50:45 发表,共计 82 个回复 |
11
ericliu001 OP @sobigfish 哈哈 也是 没怎么搜 v 站的帖子 原来还有 sov2ex
|
12
ericliu001 OP @sobigfish 看了下之前 https 的文章,虽然说的都是一个事,但侧重点不同,应该不算同质化吧,哈哈
|
13
ScotGu 2018-01-31 14:43:06 +08:00
挺不错的文章,支持!
虽然没有赶上 HTTPS 和 HSTS 那一波,有点可惜。 但是现在还是有很多人不懂 HTTPS 嘛~比如我 |
14
mineqiqi 2018-01-31 14:54:53 +08:00
支持
|
15
ericliu001 OP |
16
guiyanhe 2018-01-31 15:24:56 +08:00
比较通俗易懂
|
17
saymoon 2018-01-31 16:03:59 +08:00
文章不错
|
18
WendellSun 2018-01-31 16:04:29 +08:00
通俗易懂+1
|
19
Rasphino 2018-01-31 16:22:07 +08:00 via Android 1
我觉得楼主很好啊,推广公众号也没什么问题吧…感觉也可以发到知乎上
|
20
ericliu001 OP |
21
killerv 2018-01-31 17:16:33 +08:00
文章写得挺好的,如果是原创,我觉得留个公众号可以接受。
|
22
Actrace 2018-01-31 23:14:24 +08:00
加完 HTTPS 后全站响应时间增加一倍,运维被炒了。
|
23
ericliu001 OP @killerv 是原创,哈哈,留个公众号也是为了跟大家一起分享探讨,没有利益相关。感兴趣的就关注下,不感兴趣就不用关注呗。
|
24
ericliu001 OP @Actrace 老哥,有想法
|
25
saberpowermo 2018-02-01 09:33:50 +08:00 via Android
用心了,已收藏
|
26
ericliu001 OP @saberpowermo 谢谢啊,写文章花了一天左右的时间,哈哈
|
27
WindowPain 2018-02-01 11:46:05 +08:00 via Android
挺生动的,很形象!
|
28
xiaoyang7545 2018-02-01 13:14:04 +08:00
@est 还好了。。还有点干货。而且推广也不算很生硬,就怕那种标题党啥都没有 啪叽直接丢个广告出来。
|
29
JasonBB 2018-02-02 15:37:30 +08:00
我在掘金上面也看到了这个,同一作者??
https://juejin.im/post/5a7146fd51882573351a9d99 |
30
ericliu001 OP @JasonBB 同一作者,哈哈。
|
31
luckyscript 2018-02-03 09:01:42 +08:00
@JasonBB 留的公众号是一样的,应该是同一作者吧。
|
32
frankyxu 2018-02-03 09:50:51 +08:00
666,老铁,讲的通俗易懂
|
33
ericliu001 OP @frankyxu 感谢老铁的一台挖掘机
|
34
phantastar 2018-02-04 17:06:01 +08:00 via Android
谢谢科普!😝
|
35
ericliu001 OP @phantastar 感谢老铁
|
36
blacksmith 2018-02-06 09:38:40 +08:00
讲解的很生动,学习了。不错
|
37
shaco 2018-02-06 16:36:07 +08:00
我看懂了哈哈哈哈,多谢哥们!
|
38
ericliu001 OP |
39
zhangchioulin 2018-02-07 11:44:48 +08:00
文章写的蛮好,有些地方有点绕。。但是多看几遍就理解了。
支持,如果是原创留一个二维码宣传也是没问题的 |
40
p1094358629 2018-02-07 13:57:35 +08:00
想转载到我的博客,不知作者是否同意哇?
|
41
LeoNG 2018-02-07 14:03:32 +08:00
通俗易懂,点个赞。
不过,我感觉应该提下 SSL/TLS , 这样能更好的解释下`S`是怎么来的。 |
42
msg7086 2018-02-07 14:14:25 +08:00
我以为是讲历史的,没想到是科普文。
话说是不是连带 DHE 一起讲了会比较好? |
43
ericliu001 OP @p1094358629 同意同意,随意转载,本来就是分享,二维码保留与否都可以,哈哈。感谢你。
|
44
ericliu001 OP |
45
ericliu001 OP @zhangchioulin 文字功底不怎么好,慢慢磨炼中。感谢你的意见
|
46
MonoLogueChi 2018-02-07 23:57:35 +08:00 via Android
文章写的不错,小美是服务端,可以同时连接多个客户端😌
|
47
fanjianhang 2018-02-08 13:40:05 +08:00
@LeoNG 同意老铁
|
48
locoz 2018-02-09 17:09:53 +08:00
@MonoLogueChi 角度刁钻
|