HTTPS 通信过程详解(含CA证书验证)

背景

https协议对于我们做开发的小伙伴往往是一种既熟悉又朦胧的存在:对基本的概念有大致的了解包括加密,证书等等但是由于HTTP协议本身已经有了很好的封装所以对于通信细节往往缺乏全面的了解,笔者也是由于工作中正好碰到了相关的证书问题出于解决问题的需要对协议本身有了一些分析和了解。在查询文献过程中发现网上文章多而杂所以结合https抓包整理成简书文章分享给大家,希望能给大家带来帮助。

1.HTTPS协议的通信过程概述

HTTPS的通信一般使用非对称加密进行秘钥传递然后使用对称加密进行后面的业务数据的传输。过程如下图所示:

首先,是著名的TCP三次握手,然后是客户端和服务端的通信协议协商服务端会从客户端发送的协议中选择一种作为加密算法协议,再然后是服务端发送CA证书到客户端验证身份,验证通过后客户端会将私钥最后一段通过服务端公钥非对称加密传送到服务端,后面客户端会利用协商好的机密算法和对称秘钥进行加密通信。


关键词:TCP三次握手,CA证书,证书链,加密协议协商

2.TCP三次握手

tcp的三次握手主要流程是SYN>>>SYN,ACK>>>ACK相信大家都比较熟悉了。这里主要说下为什么是三次握手,三次握手都握了什么。

要理解tcp握手的三次过程就要先有一个背景知识就是tcp通信中的seq number,next seq number以及acknowledgment number的概念。简单来说就是B收到A发送的数据包中就会有seq+数据包长度len就可以计算出next seq number。next seq number作用有两个:1、B如果再接收到A的下一个数据包后就可以将下一个数据包的seq和本次的next seq number比较来判断中间是否有丢包 2、B通过将计算出的next seq number作为acknowledgment number返回给A来和A确认包的接收情况。(参见下图)

有了以上背景我们就能理解tcp的三次握手内容是啥了,其实就是A和B在交换各自的初始seq number。首先A将seq作为SYN发给B为,B在该seq上加1作为ACK返回A同时将自己的seq作为SYN发给A,A校验通过后在B的seq上加1作为ACK返回给B。如果A和B都能校验通过则连接建立,如上描述TCP的握手最少为三次(B将ACK和SYN合并为一次)。


A>>>>B


B>>>>A

3.加密协议协商

在加密过程中首先客户端发送ClientHello消息携带支持的加密算法(图中Cipher Suites)和一段随机数字Random1到服务端。其中随机数字Random1会在后面的对称加密中用到。

Client Hello Message

然后服务端会在客户端加密算法中选择一个自己也支持的加密算法作为后面通信的加密算法(本次实验中服务端选择TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 作为加密算法)和随机数Random2。

Server Hello Message

4.证书验证

服务端如果能够支持客户端的协议,则服务端发送证书到客户端进行身份验证。关于证书验证个人感觉主要需要掌握两点:证书链和防伪。如果以介绍信作为类比可以这样形容张三拿着李四开的介绍信去别的地方办事,这时候别人就会有两个疑问第一这个介绍信是不是李四开的(防伪),凭什么李四的介绍信说你是张三你就是张三呐(证书链)?

关于防伪有一个非对称加密的背景知识需要理解(关于非对称加密现在网上将的最明白的一篇文章就是卡卡罗2017大神的文章)简单来说非对称加密的一个核心就是六点:1,公钥和私钥成对出现 2,公开的密钥叫公钥,只有自己知道的叫私钥3,用公钥加密的数据只有对应的私钥可以解密4,用私钥加密的数据只有对应的公钥可以解密5,如果可以用公钥解密,则必然是对应的私钥加的密6,如果可以用私钥解密,则必然是对应的公钥加的密。回到本题中,则证书颁发过程其实就是上级证书颁发机构通过持有的私钥为证书请求Server信息通过私钥进行加密签名,客户端证书验证则是收到Server证书后通过证书颁发机构的公钥对签名进行解密如果能够解密则一定是证书颁发机构颁发的证书如果解密后信息与Server信息一致则确实是颁发给该Server的,综上校验通过。

如果理解了防伪则证书链就好理解了,Server将自己证书发送到客户端时候会连同颁发机构证书一同发往客户端,通过和Server证书验证同样的过程通过内嵌在浏览器或者JDK中的根证书验证下中级证书的合法性就好了。因为根证书是内嵌的具有绝对的合法性,如果根证书信任该中级机构,则该中级证书颁发的证书也是可信的这就是证书链了。所以写到这里你就知道随便安装根证书的危害了,以后只要是该根证书信任的证书就都能为客户端信任了。

主要在本次消息中的两个证书:中级证书和server证书。

certification verify

5.秘钥传递

证书验证通过后,则生成随机数Random3通过server证书中的公钥(同时也是Server非对称加密算法公钥)加密并传递给服务端。Random3只有服务端利用存储的秘钥才能解密得到,这样对称算法最后一段传递完成。

6.加密通信

由于非对称加密的运算成本较高,所以一般只用来进行秘钥传递所以完成秘钥传递之后则客户端一般会使用之前协商的加密算法并将Random1+Random2+Random3作为对称加密算法的秘钥进行加密通信。

7.总结

关于非对称加密非常重要的一点就是私钥和公钥成对出现,如果能用私钥解密则一定是用公钥加密如果能用公钥解密则一定为私钥加密这个前提对于理解证书签名认证非常重要


参考文献:

https://www.jianshu.com/p/7615d036969f

https://juejin.im/entry/5904345ab123db3ee4755ebb

https://cattail.me/tech/2015/11/30/how-https-works.html

https://www.aneasystone.com/archives/2016/04/java-and-https.html?tdsourcetag=s_pctim_aiomsg

https://www.zhihu.com/question/24853633

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 222,183评论 6 516
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,850评论 3 399
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 168,766评论 0 361
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,854评论 1 299
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,871评论 6 398
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,457评论 1 311
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,999评论 3 422
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,914评论 0 277
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,465评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,543评论 3 342
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,675评论 1 353
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,354评论 5 351
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 42,029评论 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,514评论 0 25
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,616评论 1 274
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 49,091评论 3 378
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,685评论 2 360

推荐阅读更多精彩内容