fbpx
维基百科

服务器名称指示

服务器名称指示(英語:Server Name Indication,缩写:SNI)是TLS的一个扩展协议[1],在该协议下,在握手过程开始时客户端告诉它正在连接的服务器要连接的主机名称。这允许服务器在相同的IP地址TCP端口号上呈现多个证书,并且因此允许在相同的IP地址上提供多个安全(HTTPS)网站(或其他任何基于TLS的服务),而不需要所有这些站点使用相同的证书。它与HTTP/1.1基于名称的虚拟主机的概念相同,但是用于HTTPS。

为了使SNI协议起作用,绝大多数访问者必须使用实现它的Web浏览器。使用未实现SNI浏览器的用户将被提供默认证书,因此很可能会收到证书警告。

问题的背景

当进行TLS连接时,客户端从Web服务器请求数字证书。服务器一旦发送证书,客户端就会检查这个证书,并将其尝试连接的名称与证书中包含的名称进行对比。如果发生匹配,则连接正常进行。如果没有找到匹配,则可能会向用户警告该差异,并且可能会中止连接,因为该失配可能表明存在中间人攻击。不过,某些应用程序允许用户绕过警告继续进行连接,由用户承担信任证书以及连接的责任。

一个证书覆盖多个主机名是可以做到的。X.509 v3规范引入了subjectAltName字段,该字段允许一个证书指定多个域名,并在通用名和subjectAltName字段中使用通配符

然而,由于缺少所有名称的完整列表,可能很难甚至不可能获得涵盖服务器将负责的所有名称的单个证书。负责多个主机名的服务器可能需要为每个名称(或一组名称)提供不同的证书。自2005年以来,CAcert已经在虚拟服务器上运行了TLS的不同用法的实验。[2]大多数实验是不理想和不切实际的。例如,可以使用subjectAltName来包含单个证书中由一个人控制的多个域名。[3]每当域名列表更改时,必须重新发布此类“统一通信证书”。

基于名称的虚拟主机允许多个DNS主机名由同一IP地址上的单个服务器(通常为Web服务器)托管。为了实现这一点,服务器使用客户端提供的主机名作为协议的一部分(对于HTTP,名称显示在主机头中)。但是,当使用HTTPS时,TLS握手发生在服务器看到任何HTTP头之前。因此,服务器不可能使用HTTP主机头中的信息来决定呈现哪个证书,并且因此只有由同一证书覆盖的名称才能由同一IP地址提供。

实际上,这意味着对于安全浏览来说,HTTPS服务器只能是每个IP地址服务一个域名(或一组域名)。为每个站点分配单独的IP地址会增加托管成本,因为对IP地址的请求必须为区域互联网注册机构提供证据而且现在IPv4地址已用尽。其结果是,许多网站在IPv4上使用安全通信实际上都受到了限制。IPv6地址空间未用完,因此使用IPv6提供的网站不受此问题的影响。

SNI如何解决此问题

客户端在SNI扩展中发送要连接的主机名称,作为TLS协商的一部分。[4]这使服务器能够提前选择正确的主机名称,并向浏览器提供相应TLS证书。从而,具有单个IP地址的服务器可以在获取公共证书不现实的情况下提供一组域名的TLS连接。

SNI在2003年6月的RFC 3546,《传输层安全(TLS)扩展》中加入到IETFInternet RFCs中。最新版本的标准是RFC 6066。

实现

在2004年,EdelKey项目做了一个用于将TLS/SNI添加到OpenSSL中的补丁。[5]在2006年,这个补丁被移植到OpenSSL的开发分支,并在2007年由OpenSSL 0.9.8支持(首次发布在0.9.8f[6])。

一个应用程序要实现SNI,它使用的TLS库必须实现SNI,并且该应用程序必须将主机名传递给TLS库。其他复杂的问题有,TLS库可以包括在应用程序中或者作为底层操作系统的组件。因此,一些浏览器在任何操作系统上运行时都能实现SNI,而其他浏览器仅在某些操作系统上运行时才能实现SNI。

安全性

Cloudflare的联合创始人兼首席执行官Matthew Prince曾表示,传统SNI“绝对是加密装甲中的最后缝隙之一”。(really is one of the last chinks in the encryption armor.)[7]

由于SNI信息并未加密,审查者可以识别出使用者访问的网站域名。现已被部分国家用于互联网审查,如防火长城和韩国的KCSC(廣播通信審議委員會[8]。有两种方法可以解决这个问题。

域前置

域前置通过SNI中使用虚假无害的域名信息,已经被TLS加密的应用层才使用真实的域名信息,将真实流量隐藏在看似无害的流量中,从而使审查者无法区别出来,对于基于CDN的域前置,审查者要么一律放行,要么带有严重附加伤害的一刀切封锁。[9][10]

Cloudflare在2016年的一些修改让基于其CDN的域前置不再工作。[11]

GoogleCloudFront曾经接受域前置,之后停止了,被认为是受到俄罗斯政府的压力,防止Telegram利用该技术来规避审查。[12]

加密服务器名称指示

作为TLS的标准扩展实现,TLS 1.3一开始准备通过支持加密SNI以解决这个问题。CloudflareMozillaFastly苹果的开发者制定了关于加密服务器名称指示(Encrypted Server Name Indication)的草案。[13]

2018年9月24日,Cloudflare在其网络上支持并默认启用了ESNI。[14] 2019年7月,Mozilla Firefox开始提供ESNI的草案性实现支持,但預設關閉[15][16]。2019年8月,研究人员确认ESNI可以有效规避防火长城的SNI审查。[17]

2020年3月,ESNI更名为Encrypted Client Hello(简称ECHO),把加密扩展至整个Client Hello消息。[18]2020年5月,简称更改为ECH[19]ECH被认为解决了之前ESNI扩展「突出」(stick out),从而容易被互联网服务提供商或审查系统识别的问题。[20]

自2020年7月下旬起,防火长城开始封锁加密服务器名称指示(ESNI)的TLS通信。[21]但没有封锁ECH的TLS通信。而2020年8月开始,俄罗斯互联网服务运营商Rostelecom英语Rostelecom及旗下移动手机服务运营商Tele2开始封锁加密服务器名称指示(ESNI)的TLS通信。[22]

参考文献

  1. ^ Server Name Indication. Transport Layer Security (TLS) Extensions. IETF: p. 8. sec. 3.1. RFC 3546. 
  2. ^ . CAcert Wiki. [2017-01-18]. (原始内容存档于2009-08-22). 
  3. ^ What is a Multiple Domain (UCC) SSL Certificate?. [2017-01-18]. (原始内容于2015-02-06). 
  4. ^ TLS Server Name Indication. Paul's Journal. [2017-01-18]. (原始内容于2016-08-12). 
  5. ^ EdelKey Project. [2017-01-18]. (原始内容于2016-04-04). 
  6. ^ . (原始内容存档于2016-04-20). 
  7. ^ Thomas Claburn. Don't panic about domain fronting, an SNI fix is getting hacked out. The Register. 2017-07-17 [2018-08-25]. (原始内容于2018-08-26) (英语). 
  8. ^ Sergiu Gatlan. South Korea is Censoring the Internet by Snooping on SNI Traffic. Bleeping Computer. 2019 [2021-04-17]. (原始内容于2021-04-06) (美国英语). 
  9. ^ doc/meek – Tor Bug Tracker & Wiki. [2017-01-04]. (原始内容于2016-12-13). 
  10. ^ Open Whisper Systems >> Blog >> Doodles, stickers, and censorship circumvention for Signal Android. [2017-01-04]. (原始内容于2016-12-28). 
  11. ^ #14256 (Clarify whether Cloudflare's Universal SSL thing works with meek) – Tor Bug Tracker & Wiki. Tor Bug Tracker. [12 May 2020]. (原始内容于2020-10-31). 
  12. ^ Amazon and Google bow to Russian censors in Telegram battle. Fast Company. 2018-05-04 [2018-05-09]. (原始内容于2018-05-10) (英语). 
  13. ^ Kazuho, Oku,; Christopher, Wood,; Eric, Rescorla,; Nick, Sullivan,. Encrypted Server Name Indication for TLS 1.3. IETF. 2018-07-02 [2018-08-25]. (原始内容于2018-08-13) (英语). 
  14. ^ Matthew Prince. Encrypting SNI: Fixing One of the Core Internet Bugs. 2018-09-24 [2021-06-15]. (原始内容于2020-12-12). 
  15. ^ Check if your browser uses Secure DNS, DNSSEC, TLS 1.3, and Encrypted SNI - gHacks Tech News. www.ghacks.net. [2019-07-09]. (原始内容于2019-09-02). 
  16. ^ Encrypt that SNI: Firefox edition. The Cloudflare Blog. 2018-10-18 [2019-07-09]. (原始内容于2020-02-14) (英语). 
  17. ^ Zimo Chai; Amirhossein Ghafari; Amir Houmansadr. On the Importance of Encrypted-SNI (ESNI) to Censorship Circumvention (PDF). 9th USENIX Workshop on Free and Open Communications on the Internet (FOCI 19). Santa Clara, CA: USENIX Association. 2019-08-05 [2021-10-07]. (原始内容 (PDF)于2021-12-02). currently only 66 websites can be unblocked with the help of ESNI. 
  18. ^ ESNI -> ECHO · tlswg/draft-ietf-tls-esni. [2020-05-22]. (原始内容于2021-02-25). 
  19. ^ s/ECHO/ECH · tlswg/draft-ietf-tls-esni. [2020-06-08]. (原始内容于2021-02-24). 
  20. ^ TLS Encrypted Client Hello draft-ietf-tls-esni-11. IETF Data Tracker. 2021-06-14 [2021-06-15]. (原始内容于2021-12-08). 
  21. ^ 报告:中国的防火长城已经封锁加密服务器名称指示(ESNI). iYouPort. 2020-08-08 [2020-08-10]. (原始内容于2021-03-28). 
  22. ^ Почему Ростелеком блокирует ESNI трафик?. qna.habr.com. 11 October 2020 [30 October 2020]. (原始内容于2021-01-29) (俄语). 

外部链接

服务器名称指示, 英語, server, name, indication, 缩写, 是tls的一个扩展协议, 在该协议下, 在握手过程开始时客户端告诉它正在连接的服务器要连接的主机名称, 这允许服务器在相同的ip地址和tcp端口号上呈现多个证书, 并且因此允许在相同的ip地址上提供多个安全, https, 网站, 或其他任何基于tls的服务, 而不需要所有这些站点使用相同的证书, 它与http, 1基于名称的虚拟主机的概念相同, 但是用于https, 为了使sni协议起作用, 绝大多数访问者必须使用实现它的web. 服务器名称指示 英語 Server Name Indication 缩写 SNI 是TLS的一个扩展协议 1 在该协议下 在握手过程开始时客户端告诉它正在连接的服务器要连接的主机名称 这允许服务器在相同的IP地址和TCP端口号上呈现多个证书 并且因此允许在相同的IP地址上提供多个安全 HTTPS 网站 或其他任何基于TLS的服务 而不需要所有这些站点使用相同的证书 它与HTTP 1 1基于名称的虚拟主机的概念相同 但是用于HTTPS 为了使SNI协议起作用 绝大多数访问者必须使用实现它的Web浏览器 使用未实现SNI浏览器的用户将被提供默认证书 因此很可能会收到证书警告 目录 1 问题的背景 2 SNI如何解决此问题 3 实现 4 安全性 4 1 域前置 4 2 加密服务器名称指示 5 参考文献 6 外部链接问题的背景 编辑当进行TLS连接时 客户端从Web服务器请求数字证书 服务器一旦发送证书 客户端就会检查这个证书 并将其尝试连接的名称与证书中包含的名称进行对比 如果发生匹配 则连接正常进行 如果没有找到匹配 则可能会向用户警告该差异 并且可能会中止连接 因为该失配可能表明存在中间人攻击 不过 某些应用程序允许用户绕过警告继续进行连接 由用户承担信任证书以及连接的责任 一个证书覆盖多个主机名是可以做到的 X 509 v3规范引入了subjectAltName字段 该字段允许一个证书指定多个域名 并在通用名和subjectAltName字段中使用通配符 然而 由于缺少所有名称的完整列表 可能很难甚至不可能获得涵盖服务器将负责的所有名称的单个证书 负责多个主机名的服务器可能需要为每个名称 或一组名称 提供不同的证书 自2005年以来 CAcert已经在虚拟服务器上运行了TLS的不同用法的实验 2 大多数实验是不理想和不切实际的 例如 可以使用subjectAltName来包含单个证书中由一个人控制的多个域名 3 每当域名列表更改时 必须重新发布此类 统一通信证书 基于名称的虚拟主机允许多个DNS主机名由同一IP地址上的单个服务器 通常为Web服务器 托管 为了实现这一点 服务器使用客户端提供的主机名作为协议的一部分 对于HTTP 名称显示在主机头中 但是 当使用HTTPS时 TLS握手发生在服务器看到任何HTTP头之前 因此 服务器不可能使用HTTP主机头中的信息来决定呈现哪个证书 并且因此只有由同一证书覆盖的名称才能由同一IP地址提供 实际上 这意味着对于安全浏览来说 HTTPS服务器只能是每个IP地址服务一个域名 或一组域名 为每个站点分配单独的IP地址会增加托管成本 因为对IP地址的请求必须为区域互联网注册机构提供证据而且现在IPv4地址已用尽 其结果是 许多网站在IPv4上使用安全通信实际上都受到了限制 IPv6地址空间未用完 因此使用IPv6提供的网站不受此问题的影响 SNI如何解决此问题 编辑客户端在SNI扩展中发送要连接的主机名称 作为TLS协商的一部分 4 这使服务器能够提前选择正确的主机名称 并向浏览器提供相应TLS证书 从而 具有单个IP地址的服务器可以在获取公共证书不现实的情况下提供一组域名的TLS连接 SNI在2003年6月的RFC 3546 传输层安全 TLS 扩展 中加入到IETF的Internet RFCs中 最新版本的标准是RFC 6066 实现 编辑在2004年 EdelKey项目做了一个用于将TLS SNI添加到OpenSSL中的补丁 5 在2006年 这个补丁被移植到OpenSSL的开发分支 并在2007年由OpenSSL 0 9 8支持 首次发布在0 9 8f 6 一个应用程序要实现SNI 它使用的TLS库必须实现SNI 并且该应用程序必须将主机名传递给TLS库 其他复杂的问题有 TLS库可以包括在应用程序中或者作为底层操作系统的组件 因此 一些浏览器在任何操作系统上运行时都能实现SNI 而其他浏览器仅在某些操作系统上运行时才能实现SNI 安全性 编辑Cloudflare的联合创始人兼首席执行官Matthew Prince曾表示 传统SNI 绝对是加密装甲中的最后缝隙之一 really is one of the last chinks in the encryption armor 7 由于SNI信息并未加密 审查者可以识别出使用者访问的网站域名 现已被部分国家用于互联网审查 如防火长城和韩国的KCSC 廣播通信審議委員會 8 有两种方法可以解决这个问题 域前置 编辑 主条目 域前置 域前置通过SNI中使用虚假无害的域名信息 已经被TLS加密的应用层才使用真实的域名信息 将真实流量隐藏在看似无害的流量中 从而使审查者无法区别出来 对于基于CDN的域前置 审查者要么一律放行 要么带有严重附加伤害的一刀切封锁 9 10 Cloudflare在2016年的一些修改让基于其CDN的域前置不再工作 11 Google和CloudFront曾经接受域前置 之后停止了 被认为是受到俄罗斯政府的压力 防止Telegram利用该技术来规避审查 12 加密服务器名称指示 编辑 作为TLS的标准扩展实现 TLS 1 3一开始准备通过支持加密SNI以解决这个问题 Cloudflare Mozilla Fastly和苹果的开发者制定了关于加密服务器名称指示 Encrypted Server Name Indication 的草案 13 2018年9月24日 Cloudflare在其网络上支持并默认启用了ESNI 14 2019年7月 Mozilla Firefox开始提供ESNI的草案性实现支持 但預設關閉 15 16 2019年8月 研究人员确认ESNI可以有效规避防火长城的SNI审查 17 2020年3月 ESNI更名为Encrypted Client Hello 简称ECHO 把加密扩展至整个Client Hello消息 18 2020年5月 简称更改为ECH 19 ECH被认为解决了之前ESNI扩展 突出 stick out 从而容易被互联网服务提供商或审查系统识别的问题 20 自2020年7月下旬起 防火长城开始封锁加密服务器名称指示 ESNI 的TLS通信 21 但没有封锁ECH的TLS通信 而2020年8月开始 俄罗斯互联网服务运营商Rostelecom 英语 Rostelecom 及旗下移动手机服务运营商Tele2开始封锁加密服务器名称指示 ESNI 的TLS通信 22 参考文献 编辑 Server Name Indication Transport Layer Security TLS Extensions IETF p 8 sec 3 1 RFC 3546 CAcert VHostTaskForce CAcert Wiki 2017 01 18 原始内容存档于2009 08 22 What is a Multiple Domain UCC SSL Certificate 2017 01 18 原始内容存档于2015 02 06 TLS Server Name Indication Paul s Journal 2017 01 18 原始内容存档于2016 08 12 EdelKey Project 2017 01 18 原始内容存档于2016 04 04 OpenSSL CHANGES 原始内容存档于2016 04 20 Thomas Claburn Don t panic about domain fronting an SNI fix is getting hacked out The Register 2017 07 17 2018 08 25 原始内容存档于2018 08 26 英语 Sergiu Gatlan South Korea is Censoring the Internet by Snooping on SNI Traffic Bleeping Computer 2019 2021 04 17 原始内容存档于2021 04 06 美国英语 doc meek Tor Bug Tracker amp Wiki 2017 01 04 原始内容存档于2016 12 13 Open Whisper Systems gt gt Blog gt gt Doodles stickers and censorship circumvention for Signal Android 2017 01 04 原始内容存档于2016 12 28 14256 Clarify whether Cloudflare s Universal SSL thing works with meek Tor Bug Tracker amp Wiki Tor Bug Tracker 12 May 2020 原始内容存档于2020 10 31 Amazon and Google bow to Russian censors in Telegram battle Fast Company 2018 05 04 2018 05 09 原始内容存档于2018 05 10 英语 Kazuho Oku Christopher Wood Eric Rescorla Nick Sullivan Encrypted Server Name Indication for TLS 1 3 IETF 2018 07 02 2018 08 25 原始内容存档于2018 08 13 英语 Matthew Prince Encrypting SNI Fixing One of the Core Internet Bugs 2018 09 24 2021 06 15 原始内容存档于2020 12 12 Check if your browser uses Secure DNS DNSSEC TLS 1 3 and Encrypted SNI gHacks Tech News www ghacks net 2019 07 09 原始内容存档于2019 09 02 Encrypt that SNI Firefox edition The Cloudflare Blog 2018 10 18 2019 07 09 原始内容存档于2020 02 14 英语 Zimo Chai Amirhossein Ghafari Amir Houmansadr On the Importance of Encrypted SNI ESNI to Censorship Circumvention PDF 9th USENIX Workshop on Free and Open Communications on the Internet FOCI 19 Santa Clara CA USENIX Association 2019 08 05 2021 10 07 原始内容存档 PDF 于2021 12 02 currently only 66 websites can be unblocked with the help of ESNI ESNI gt ECHO tlswg draft ietf tls esni 2020 05 22 原始内容存档于2021 02 25 s ECHO ECH tlswg draft ietf tls esni 2020 06 08 原始内容存档于2021 02 24 TLS Encrypted Client Hello draft ietf tls esni 11 IETF Data Tracker 2021 06 14 2021 06 15 原始内容存档于2021 12 08 报告 中国的防火长城已经封锁加密服务器名称指示 ESNI iYouPort 2020 08 08 2020 08 10 原始内容存档于2021 03 28 Pochemu Rostelekom blokiruet ESNI trafik qna habr com 11 October 2020 30 October 2020 原始内容存档于2021 01 29 俄语 外部链接 编辑RFC 6066 obsoletes RFC 4366 which obsoleted RFC 3546 取自 https zh wikipedia org w index php title 服务器名称指示 amp oldid 72346861, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。