HTTPS从原理到应用(三):SSL/TLS协议

有了前面加密和哈希以及数字证书和数字签名两篇文章的铺垫,终于可以来认识HTTPS的核心所在了,SSL/TLS协议。本篇从SSL/TLS发展历史到握手以及传输的详细过程来讲解。
此篇文章的逻辑图

图0-0 此篇文章的逻辑图

SSL/TLS协议概览

SSL/TLS协议是什么

计算机网络的OSI七层模型和TCP/IP四层模型想必大家都知道。其中SSL/TLS是一种介与于传输层(比如TCP/IP)和应用层(比如HTTP)的协议。它通过"握手协议(Handshake Protocol)"和"传输协议(Record Protocol)"来解决传输安全的问题。SSL/TLS是一个可选层,没有它,使用HTTP也可以通信,它存在的目的就是为了解决安全问题,这也就是HTTPS相对于HTTP的精髓所在。

SSL/TLS协议发展历史

SSL/TLS协议发展历史参看下表,更详细的发展历史参看维基百科的SSL/TLS协议发展历史

Protocol Year RFC Description
SSL 1.0 1994 NetScape公司设计1.0版 但是未发布
SSL 2.0 1995.02 NetScape公司发布SSL 2.0版
SSL 3.0 1996 RFC 6101 NetScape公司发布SSL 3.0版
TLS 1.0 1999 RFC 2246 IETF将SSL标准化 改名为TLS 发布1.0版
TLS 1.1 2006.04 RFC 4346 发布TLS1.1版
TLS 1.2 2008.08 RFC 5246 发布TLS1.2版
TLS 1.3 TLS 1.3还是一个互联网草案 待发布

目前,应用最广泛的是TLS 1.0,接下来是SSL 3.0。但是,主流浏览器都已经实现了TLS 1.2的支持。值得一提的是iOS9App,需将HTTP连接升级到HTTPS,并且TLS版本不得低于1.2(当然升级为HTTPS并非必须的)。

SSL/TLS运行过程

SSL/TLS运行过程概述

上面提到SSL/TLS有两个阶段握手协议传输协议握手协议就是建立起连接的过程,这个阶段采用非对称加密,这个过程完毕后会生成一个对话秘钥,从而传输协议过程,就是用这个对话秘钥使用对称加密进行传输。之所以这样做,是因为,非对称加密是很耗性能的。而握手协议过程中,使用数字证书保证了公钥的安全性。当然这个过程既可以双向证书验证,也可以只验证服务端的证书单向证书验证。这也是前两节所作的铺垫,不至于这儿看的太迷糊。

SSL/TLS运行过程详解

图2-0 SSL/TLS运行过程详解

结合上图(图2-0),我来说明上图中一步步的都发生了什么?

客户端发出请求(Client Hello)

对应上图第一步,客户端发出请求,这一步客户端主要向服务端提供以下信息:

  • 支持的SSL/TLS协议版本
  • 支持的加密套件列表(cipher suite)
  • 支持的压缩算法列表(compression methods),用于后续的压缩传输
  • 产生的一个随机数random_C(random number),客户端有存留,稍后用于生成"对话密钥(session key)"
服务端回应(Server Hello)

收到客服端的请求之后,服务端向客户端回应以下信息:

  • 根据客户端支持的SSL/TLS协议版本,和自己的比较确定使用的SSL/TLS协议版本,如果没有合适的,对话关闭
  • 回应加密套件,压缩算法
  • 产生的一个随机数random_S(random number),服务端有存留,稍后用于生成"对话密钥(session key)"
  • 服务端数字证书(证明自己的身份,传递公钥)
  • 如果需要验证客户端,发出请求,要求客户端提供证书
客户端回应

客户端收到服务端的回应后,首先验证服务端的数字证书,如果证书没有问题继续下去,如果证书有问题,则会有相应提示,或者对话直接关闭。然后客户端在向服务端发送以下信息:

  • 如果服务端有请求证书,发送自己的数字证书
  • 在产生一个随机数pre-master key(random number),并且用服务端数字证书中的公钥加密
  • 编码改变通知,表示随后的信息都将用双方商定的加密方法和密钥发送
服务端最后的回应

如果有客户端的证书,就先验证客户端的证书

  • 使用自己的私钥,对随机数pre-master key解密,这时客户端和服务端各自有了三个随机数,然后用原来协商的加密方式生成本次通话使用的会话密钥(session key)
  • 编码改变通知,表示随后的信息都将用双方商定的加密方法和密钥发送

这时客户端和服务端都有了session key,然后握手协议阶段就结束了。下面开始使用session key对称加密数据,进行传输,就进入了下一个阶段,传输协议过程。

总结

这块的重点在与SSL/TSL协议的握手协议过程。在第三步,客户端验证证书的时候,如果服务端的证书在系统默认信任证书列表中(系统会默认信任一些CA认证中心的根证书)则会直接通过,如果没有在系统默认信任证书列表中,浏览器可能会弹窗让用户选择是否信任该证书,也有可能会直接关闭连接,提示用户,证书不可信。而在App内,如果想要信任未在系统信任列表中的证书,则需要在App内提前置入服务端证书,关于这一点有讲。而关于认证方式,大多数也都是采用的单向认证,也就是说仅仅认证服务端的证书,而像银行等机构则多使用双向认证的方式。

参考

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

推荐阅读更多精彩内容