我们看本文刚开端的例子,第4行发往 github.com 的 ClientHello 中的 SNI Extension 字段:
- Extension Header || Extension Payload (SNI)
- ---------------------------------------------------------------------------------------------------
- ExtensionType Length || PayloadLength Type ServerLength ServerName
- ---------------------------------------------------------------------------------------------------
- 00 00 00 0f 00 0d 00 00 0a 67 69 74 68 75 62 2e 63 6f 6d
- sni(0) 15 || 13 host_name 10 github.com
ALPN/NPN
TLS/SSL 是在传输层之上应用层之下的协定,是以 HTTP 协定的内容不受影响。这些加刺探取非对称加密算法是以须要一个官方来宣布公钥,这就是 密钥基本举措措施(CA)。是以各浏览器会内置一些 CA 的根证书,这些 CA 可以进一步授权其他的域名,如许你的浏览器就可以对正在拜访的域名进行身份认证。
ALPN(Application-Layer Protocol Negotiation)也是 TLS 层的扩大,用于协商应用层应用的协定。它的前身是 NPN,最初用于支撑 Google SPDY 协定(现已标准化为 HTTP/2)。 TLS 客户端和办事器版本的问题,导致 SPDY->HTTP/2 和 NPN -> ALPN 的切换过程激发了不少阵痛:
- The day Google Chrome disables HTTP/2
- 大年夜启用 HTTP/2 导致网站无法拜访说起
是以 以标准先行的方法来推动 Web 基本举措措施 已成为今日 Web 平台的共鸣。这里我们不提那些仍然在进行作坊式临盆的(类)浏览器厂商,任何阻挡 Web 平台成长的实现(甚至标准,试看 XHTML, OSI…)迟早会被镌汰。
言归正传,ALPN 定义在 RFC 7301 - Transport Layer Security (TLS) Application-Layer Protocol Negotiation Extension,
- enum {
- application_layer_protocol_negotiation(16), (65535)
- } ExtensionType;
- opaque ProtocolName<1..2^8-1>;
- struct {
- ProtocolName protocol_name_list<2..2^16-1>
- } ProtocolNameList;
我们看本文刚开端的例子,第4行发往 github.com 的 ClientHello 中的 ALPN Extension 字段:
- Extension Header || Extention Payload (ALPN)
- ---------------------------------------------------------------------------------------------------
- ExtensionType Length || PayloadLength StringLength Protocol StringLength Protocol
- ---------------------------------------------------------------------------------------------------
- 00 10 00 0e 00 0c 02 68 32 08 68 74 74 70 2f 31 2e 31
推荐阅读
苹果再减600万部iPhone X产量 累计砍掉7500万部
沙龙晃荡 | 3月31日 京东、微博、华为拭魅战专家与你合营商量容器技巧实践! iPhone X为何发卖低迷,媒体的分析比较一致。重要有两个原因,起首是订价过高。苹不雅999美元的订价创造了公司>>>详细阅读
本文标题:HTTPS那些协议:TLS, SSL, SNI, ALPN, NPN
地址:http://www.17bianji.com/lsqh/40890.html
1/2 1