网易首页 > 网易号 > 正文 申请入驻

网络协议之:加密传输中的NPN和ALPN

0
分享至

网络协议之:加密传输中的NPN和ALPN

文章目录


  • 简介

  • SSL/TLS协议

  • NPN和ALPN

  • 总结


简介

自从HTTP从1.1升级到了2,一切都变得不同了。虽然HTTP2没有强制说必须使用加密协议进行传输,但是业界的标准包括各大流行的浏览器都只支持HTTPS情况下的HTTP2协议。

那么怎么在HTTPS之中加入HTTP2协议的支持呢?今天本文将会跟大家聊一下SSL/TLS协议的扩展NPN和ALPN。

SSL/TLS协议

SSL(Secure Socket Layer)安全套接层,是1994年由Netscape公司设计的一套协议,并与1995年发布了3.0版本。

TLS(Transport Layer Security)传输层安全是IETF在SSL3.0基础上设计的协议,实际上相当于SSL的后续版本。

SSL/TLS是一种密码通信框架,他是世界上使用最广泛的密码通信方法。

TLS主要分为两层,底层的是TLS记录协议,主要负责使用对称密码对消息进行加密。

上层的是TLS握手协议,主要分为握手协议,密码规格变更协议和应用数据协议4个部分。

其中最重要的就是握手协议,通过客户端和服务器端的交互,和共享一些必要信息,从而生成共享密钥和交互证书。

接下来我们一步步的介绍每一步的含义:

  1. client hello

    客户端向服务器端发送一个client hello的消息,包含下面内容:

    • 可用版本号

    • 当前时间

    • 客户端随机数

    • 会话ID

    • 可用的密码套件清单

    • 可用的压缩方式清单

我们之前提到了TLS其实是一套加密框架,其中的有些组件其实是可以替换的,这里可用版本号,可用的密码套件清单,可用的压缩方式清单就是向服务器询问对方支持哪些服务。

客户端随机数是一个由客户端生成的随机数,用来生成对称密钥。

  1. server hello

    服务器端收到client hello消息后,会向客户端返回一个server hello消息,包含如下内容:

    • 使用的版本号

    • 当前时间

    • 服务器随机数

    • 会话ID

    • 使用的密码套件

    • 使用的压缩方式

使用的版本号,使用的密码套件,使用的压缩方式是对步骤1的回答。

服务器随机数是一个由服务器端生成的随机数,用来生成对称密钥。

  1. 可选步骤:certificate

    服务器端发送自己的证书清单,因为证书可能是层级结构的,所以处理服务器自己的证书之外,还需要发送为服务器签名的证书。
    客户端将会对服务器端的证书进行验证。如果是以匿名的方式通信则不需要证书。

  2. 可选步骤:ServerKeyExchange

    如果第三步的证书信息不足,则可以发送ServerKeyExchange用来构建加密通道。

    ServerKeyExchange的内容可能包含两种形式:

    • 如果选择的是RSA协议,那么传递的就是RSA构建公钥密码的参数(E,N)。我们回想一下RSA中构建公钥的公式: 密文=明文^E\ mod\ N 密文=明文E mod N, 只要知道了E和N,那么就知道了RSA的公钥,这里传递的就是E,N两个数字。具体内容可以参考RSA算法详解

    • 如果选择的是Diff-Hellman密钥交换协议,那么传递的就是密钥交换的参数,具体内容可以参考更加安全的密钥生成方法Diffie-Hellman

  3. 可选步骤:CertificateRequest

    如果是在一个受限访问的环境,比如fabric中,服务器端也需要向客户端索要证书。
    如果并不需要客户端认证,则不需要此步骤。

  4. server hello done
    服务器端发送server hello done的消息告诉客户端自己的消息结束了。

  5. 可选步骤:Certificate

    对步骤5的回应,客户端发送客户端证书给服务器

  6. ClientKeyExchange

    还是分两种情况:

    • 如果是公钥或者RSA模式情况下,客户端将根据客户端生成的随机数和服务器端生成的随机数,生成预备主密码,通过该公钥进行加密,返送给服务器端。

    • 如果使用的是Diff-Hellman密钥交换协议,则客户端会发送自己这一方要生成Diff-Hellman密钥而需要公开的值。具体内容可以参考更加安全的密钥生成方法Diffie-Hellman,这样服务器端可以根据这个公开值计算出预备主密码。

  7. 可选步骤:CertificateVerify

    客户端向服务器端证明自己是客户端证书的持有者。

  8. ChangeCipherSpec(准备切换密码)

    ChangeCipherSpec是密码规格变更协议的消息,表示后面的消息将会以前面协商过的密钥进行加密。

  9. finished(握手协议结束)

    客户端告诉服务器端握手协议结束了。

  10. ChangeCipherSpec(准备切换密码)

    服务器端告诉客户端自己要切换密码了。

  11. finished(握手协议结束)

    服务器端告诉客户端,握手协议结束了。

  12. 切换到应用数据协议

    这之后服务器和客户端就是以加密的方式进行沟通了。

NPN和ALPN

上面我们介绍SSL/TLS协议的时候,最后一步是切换到应用数据协议,那么客户端是怎么和服务器端讨论协商具体使用哪种应用数据协议呢?是使用HTTP1.1?还是HTTP2?还是SPDY呢?

这里就要用到TLS扩展协议了。而NPN(Next Protocol Negotiation) 和 ALPN (Application Layer Protocol Negotiation) 就是两个TLS的扩展协议。

他们主要用在TLS中,用来协商客户端和服务器端到底应该使用什么应用数据协议进行沟通。

其中NPN是SPDY使用的扩展,而ALPN是HTTP2使用的扩展。

他们两个有什么区别呢?

相较于NPN来说,ALPN在client hello消息中已经列出了客户端支持的应用层协议,服务器端只需要从中选择出它支持的协议即可。比NPN少了一个交互的步骤,所以ALPN是推荐的协议。

下面是具体的交互流程图:

交互的例子

下面以ALPN为例,讲解下具体的交互流程,首先是客户端发送”Client Hello“消息:

Handshake Type: Client Hello (1)
Length: 141
Version: TLS 1.2 (0x0303)
Random: dd67b5943e5efd0740519f38071008b59efbd68ab3114587...
Session ID Length: 0
Cipher Suites Length: 10
Cipher Suites (5 suites)
Compression Methods Length: 1
Compression Methods (1 method)
Extensions Length: 90
[other extensions omitted]
Extension: application_layer_protocol_negotiation (len=14)
Type: application_layer_protocol_negotiation (16)
Length: 14
ALPN Extension Length: 12
ALPN Protocol
ALPN string length: 2
ALPN Next Protocol: h2
ALPN string length: 8
ALPN Next Protocol: http/1.1

可以看到在client hello消息中的Extension字段中,使用了ALPN,并且列出了可以选择使用的两种ALPN Protocol:h2和http/1.1。

对应的“server hello” 消息会选择出具体使用的ALPN protocol如下:

Handshake Type: Server Hello (2)
Length: 94
Version: TLS 1.2 (0x0303)
Random: 44e447964d7e8a7d3b404c4748423f02345241dcc9c7e332...
Session ID Length: 32
Session ID: 7667476d1d698d0a90caa1d9a449be814b89a0b52f470e2d...
Cipher Suite: TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (0xc02f)
Compression Method: null (0)
Extensions Length: 22
[other extensions omitted]
Extension: application_layer_protocol_negotiation (len=5)
Type: application_layer_protocol_negotiation (16)
Length: 5
ALPN Extension Length: 3
ALPN Protocol
ALPN string length: 2
ALPN Next Protocol: h2

如上所示,服务器端选择了h2, 最终当客户端和服务器端TLS握手结束之后,会选择使用HTTP2作为后续的应用层数据协议。

总结

NPN和ALPN都是TLS的扩展,相较而言,ALPN更加好用。

本文已收录于 http://www.flydean.com/08-ssl-tls-npn-alpn/

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
我跟你说,男人最好的春药,压根就不是什么枸杞海参,全是扯淡。

我跟你说,男人最好的春药,压根就不是什么枸杞海参,全是扯淡。

不甜的李子
2026-03-20 13:00:35
蒙嘉慧参加豪门婚姻低调,一身黑不打扮,李嘉欣露背裙艳惊四座

蒙嘉慧参加豪门婚姻低调,一身黑不打扮,李嘉欣露背裙艳惊四座

欢乐大意
2026-05-25 00:35:24
男人搞定50岁女人最好方法,喂饱了她两个需求,她就会主动依你

男人搞定50岁女人最好方法,喂饱了她两个需求,她就会主动依你

心理观察局
2026-05-04 08:20:08
巴基斯坦总理:我们会取得成功,成为“小中国”

巴基斯坦总理:我们会取得成功,成为“小中国”

观察者网
2026-05-24 21:30:08
83年飞行员王学成叛逃台湾,邓丽君慰问时耳语一句后被强行支走

83年飞行员王学成叛逃台湾,邓丽君慰问时耳语一句后被强行支走

鉴史录
2026-05-24 15:48:49
官方通报“都溪林场家属小区马匹受惊致一女童死亡”

官方通报“都溪林场家属小区马匹受惊致一女童死亡”

界面新闻
2026-05-24 22:33:16
14岁被送上导演的床,17岁拍全裸写真,被操控半生,如今怎样了?

14岁被送上导演的床,17岁拍全裸写真,被操控半生,如今怎样了?

阿讯说天下
2026-04-18 11:52:55
索尼PS发布会将炸裂全网!内部员工激动到无以言表

索尼PS发布会将炸裂全网!内部员工激动到无以言表

游民星空
2026-05-22 22:52:34
高温之下,孟买“超越上海”梦碎?

高温之下,孟买“超越上海”梦碎?

风铃草语
2026-05-24 10:07:56
天津中到大雨,局地大到暴雨!新一轮明显降雨马上到...

天津中到大雨,局地大到暴雨!新一轮明显降雨马上到...

全接触狐狐
2026-05-24 14:08:06
朱芳雨盯上2米25老熟人!广东内线补强目标曝光,拿啥筹码换呢?

朱芳雨盯上2米25老熟人!广东内线补强目标曝光,拿啥筹码换呢?

烟浔渺渺
2026-05-24 14:19:01
40岁童星街头被拍:眉毛镶满水钻,手里夹着烟

40岁童星街头被拍:眉毛镶满水钻,手里夹着烟

赴一场山海啊
2026-05-22 01:48:16
输给广厦出局后!周鹏去向曝光,深圳寻求交易广东,租借黄明依?

输给广厦出局后!周鹏去向曝光,深圳寻求交易广东,租借黄明依?

绯雨儿
2026-05-24 12:14:05
名将大聚会!苗立杰给郭士强送飞吻!李梦紧身衣丰韵,小丁胖很多

名将大聚会!苗立杰给郭士强送飞吻!李梦紧身衣丰韵,小丁胖很多

老吴说体育
2026-05-25 00:55:28
妮可拉与布鲁克林同框亮相,造型氛围感拉满

妮可拉与布鲁克林同框亮相,造型氛围感拉满

述家娱记
2026-05-24 20:10:21
请5万员工带薪玩迪士尼,预计花费八千万!老板豪气回应:公司挣了钱就是要跟员工一起花

请5万员工带薪玩迪士尼,预计花费八千万!老板豪气回应:公司挣了钱就是要跟员工一起花

新浪财经
2026-05-22 21:20:17
约会时女人说去厕所,其实是在给你两个暗示,听懂的都不是凡人

约会时女人说去厕所,其实是在给你两个暗示,听懂的都不是凡人

心理观察局
2026-05-18 09:11:14
震惊:俄罗斯与白俄罗斯“越过红线”,乌克兰要求北约紧急反应!

震惊:俄罗斯与白俄罗斯“越过红线”,乌克兰要求北约紧急反应!

达文西看世界
2026-05-22 16:19:35
拉夫罗夫:莫斯科将把所有历史上的俄罗斯土地归还其合法家园

拉夫罗夫:莫斯科将把所有历史上的俄罗斯土地归还其合法家园

旧窗老街
2026-02-23 01:50:19
蔚来法务部正式发声,遭遇多轮恶意抹黑,留存完整侵权证据并报案

蔚来法务部正式发声,遭遇多轮恶意抹黑,留存完整侵权证据并报案

音乐时光的娱乐
2026-05-25 02:33:24
2026-05-25 03:44:49
flydean程序那些事
flydean程序那些事
最通俗的解读,最深刻的干货!
356文章数 438关注度
往期回顾 全部

科技要闻

我戴着摄像头上班,正在帮AI抢走我饭碗

头条要闻

山西矿难遇难者家属:父亲年过半百 我们一直劝他别干了

头条要闻

山西矿难遇难者家属:父亲年过半百 我们一直劝他别干了

体育要闻

唐斯发牌,大头逆袭:骑士跌向残忍夏季

娱乐要闻

王鹤棣掉粉超20万!代言和作品遭抵制

财经要闻

什么情况下,本轮AI大行情会结束?

汽车要闻

国民家轿再上新 帝豪向上系列限时5.59万起

态度原创

本地
教育
数码
房产
健康

本地新闻

用云锦的方式,打开江苏南京

教育要闻

养女儿一定要懂的道理!

数码要闻

618游戏本怎么选?ROG魔霸新锐2026来袭,福利秒杀让战力飞

房产要闻

疯狂周末,海口楼市突然爆了!

外泌体 ≠ 生长因子!它们之间究竟有何区别?

无障碍浏览 进入关怀版