作家
登录

HTTPS那些协议:TLS, SSL, SNI, ALPN, NPN

作者: 来源: 2018-03-26 15:24:27 阅读 我要评论

沙龙晃荡 | 3月31日 京东、微博、华为拭魅战专家与你合营商量容器技巧实践!


本文存眷个中 Web 办事(HTTPS)相干的扩大,如 SNI, NPN, ALPN。这些协定经由过程扩大 TLS 的 ClientHello/ServerHello 消息为 TLS 增长新的功能。为此我们先看一下 ClientHello 消息的构造(ServerHello 类似):

HTTPS 概要

HTTPS 是建立在安然通信之上的 HTTP,应用传输层加密(TLS 或 SSL)的手段。其目标是保护用户隐私(比如防止经由的收集节点截获 HTTP 内容)和数据完全性(比如运营商强插告白),就是端到端加密来防止中心人进击。

如不雅你要本身的办事也支撑 HTTPS 去 CA 注册本身的域名就可以了。有一些免费的 CA 比如 GoDaddy, Let’s Encrypt, CloudFlare 等可以选择。

HTTPS 交互示例

以下 Wireshark 日记记录了一个发往 https://github.com/harttle 的 GET 请求,可以看到重要的几个协定的交互过程:

  • TCP。前三行完成一对 SYN/ACK(即俗称的三次握手),至此 TCP 连接已经成功建立。
  • TLS。4-5 行开端了 TLS 握手,建立这个加密层。
  • TLS 有浩瀚扩大协定比如 SNI,NPN,ALPN 等(见下文),就产生在 TLS 的 ClientHello 和 ServerHello 阶段。
tcp dump

TLS/SSL

TLS 的前身是 SSL,TCP/IP 协定栈中运行在 TCP 之上,用来交换密钥并形成一个加密层(Record Layer)。 TLS 是 HTTPS 的核心协定,HTTPS 交淮竽暌闺 HTTP 交互的重要差别就在这一层:

tls

TLS 作为 TCP/IP 协定栈中的加密协定有广泛的用处,为支撑通用机制的协定扩大,定义了 RFC 4366 - TLS Extensions。 TLS 先后被邮件办事、Web 办事、FTP 等采取,这里有一个 扩大协定列表。

  1. struct { 
  2.     ProtocolVersion client_version; 
  3.     Random random; 
  4.     SessionID session_id; 
  5.     CipherSuite cipher_suites<2..2^16-2>; 
  6.     CompressionMethod compression_methods<1..2^8-1>; 
  7.     select (extensions_present) { 
  8.         case false
  9.             struct {}; 
  10.         case true
  11.             Extension extensions<0..2^16-1>; 
  12.     }; 
  13. } ClientHello; 

留意最后一个字段,最多可以有 65536 个 Extension,个中 Extension 定义为一个两字节的 ExtensionType 以及对应的不通明数据。下文的 SNI,NPN,ALPN 都是个中之一。

开端传输密文前须要进行交换密钥、验证办事器证书等预备工作,是以 TLS 也存在握手阶段,重要步调为:客户端发送 ClientHello,办事器发送 ServerHello,办事器持续发送 Certificate,然后互相发送 KeyExchange 消息,最后发送 ChangeCipherSpec 来通知对方后续都是密文。具体交互和协定字段请参考 RFC 5246(TLSv1.2)和 RFC 6176(TLSv2.0)。

SNI

SNI(Server Name Indication)指定了 TLS 握手时要连接的 主机名。 SNI 协定是为了支撑同一个 IP(和端口)支撑多个域名。

因为在 TLS 握手时代办事器须要发送证书(Certificate)给客户端,为此须要知道客户请求的域名(因为不合域名的证书可能是不一样的)。这时有同窗要问了,要连接的主机名不就是提议 HTTP 时的 Host 么!这是对 HTTPS 机制的误会,TLS Handshake 产生时 HTTP 交互还没开端,天然 HTTP 头部还没达到办事器。SNI 协定就定义在 RFC 6066 中:

  1. struct { 
  2.     NameType name_type; 
  3.     select (name_type) { 
  4.         case host_name: HostName; 
  5.     } name

      推荐阅读

      苹果再减600万部iPhone X产量 累计砍掉7500万部

    沙龙晃荡 | 3月31日 京东、微博、华为拭魅战专家与你合营商量容器技巧实践! iPhone X为何发卖低迷,媒体的分析比较一致。重要有两个原因,起首是订价过高。苹不雅999美元的订价创造了公司>>>详细阅读


    本文标题:HTTPS那些协议:TLS, SSL, SNI, ALPN, NPN

    地址:http://www.17bianji.com/lsqh/40890.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)