什么是 SNI(服务器名称指示)及其工作原理?

SNI (Server Name Indication)

如今,在同一 IP 地址下运行多个 HTTPS 网站已是司空见惯的做法。 但情况并非总是如此。 最初,您需要为每个要保护的域设置专用 IP 地址。 然而,服务器名称指示(SNI)的出现改变了整个 SSL 的格局。

在本文中,我们将解释什么是 SNI、它是如何工作的,以及为什么您可能需要它。 为了更好地了解整个过程,我们需要回顾一下 SNI 创建之前的历史。


目录

  1. SNI 之前:基于名称的主机及其与 HTTPS 的不匹配
  2. 什么是 SNI?
  3. 为什么使用 SNI?
  4. SNI 如何工作?
  5. SNI 有哪些优势?
  6. SNI 和 SAN 有哪些区别?
  7. 通配符证书与 SNI 证书
  8. 哪些浏览器支持 SNI?
  9. SNI 有什么缺点吗?
  10. 为什么 SNI 没有得到更广泛的普及?
  11. 什么是加密 SNI(ESNI)?

SNI 之前:基于名称的主机及其与 HTTPS 的不匹配

十多年前,只有一小部分网站使用 HTTPS 协议。 HTTP 仍然是国王。 如今,如果要在同一 IP 地址上托管多个 HTTP 网站,可以使用基于名称的主机。 例如,如果在同一 IP 地址上运行三个 HTTP 站点,当用户连接到某个站点时,它会使用包含主机名的唯一 HTTP 标头。 作为回应,服务器会识别并匹配该标头,然后向用户发送所需的目的地。

这种方法在 HTTPS 出现之前一直有效,但之后就失效了。 由于 SSL/TLS 需要握手才能在客户端和服务器之间建立安全连接,因此在握手完成之前,无法下载包含必要主机名的 HTTP 标头。 服务器根本不知道该匹配哪个网站并将用户发送到哪个网站。 这就是思能新的救星。


什么是 SNI?

SNI是 TLS(传输层安全)协议的扩展,可让多个网站共享同一个 IP 地址。 它允许网络服务器在同一 IP 上托管多个 SSL/TLS 证书,这对使用 HTTPS 加密与用户通信的网站来说是一项重要优势。

现在,我们都知道 TLS 是确保敏感数据在传输过程中安全的加密协议(如果你不知道,这里有SSL/TLS 证书的快速技术概述),但在某些情况下,TLS 本身远非完美。 在同一 IP 地址上运行多个 SSL 证书就是一种必要的情况。 除非得到扩展程序的帮助,否则 TLS 无法做到这一点

就像浏览器的扩展功能增加了更多特性和更好的功能一样,SNI 是 TLS/SSL 协议的扩展功能,允许用户在单个 IP 地址上托管多个 SSL 证书。 SNI 通过在SSL/TLS 握手中插入 HTTP 标头来实现这一功能。

在 2003 年 SNI 成为 TLS 扩展名之前,每个要加密的网站都需要一个唯一的 IP 地址。 这导致了巨大的成本,但更令人担忧的是 IPv4 IP 地址的快速消耗。 唯一 IP 地址不是无限的。 例如,互联网协议版本 4 大约有 40 亿个地址。

在 SNI 出现之前,人们确实担心 IPv4 地址会在新的 IPv6 出现之前用完。 SNI 设法减轻了这些担忧,并减缓了 IPv4 的耗尽速度。 另一个好消息是,IPv6 大约有 340 个十亿位址。 即 340 后加 36 个零。 这样的数额在可预见的将来应该是足够的。


为什么使用 SNI?

SNI 通过促进 SSL 证书管理,使网站所有者能够确保与其用户和客户的通信安全。 如果没有 SNI,每个网站都需要一个唯一的 IP 地址才能使用 HTTPS 加密,这对于预算紧张的小型企业和公司来说可能会很昂贵。

SNI 还使网站管理变得更容易,因为网络服务器现在可以在同一 IP 地址上托管多个 SSL/TLS 证书。 这意味着网站所有者可以轻松地从托管账户中添加或删除网站。


SNI 如何工作?

通过 HTTPS 访问网站时,网络浏览器和网站服务器需要通过 SSL/TLS 握手建立安全连接。 在此过程中,网络浏览器会向服务器发送包含网站主机名的信息。

在 SNI 的情况下,网站的主机名会包含在客户端 “你好“信息中,这样服务器就能在服务器你好“信息中选择要使用的正确证书。 因此,服务器可以在同一 IP 地址上托管多个 SSL 证书。

大多数现代网络服务器和浏览器都支持 SNI,但旧版本可能不支持。 在这种情况下,网络浏览器可能会收到一个通用的 SSL 证书,而不是正确的证书,这可能会导致出现警告或错误。


SNI 有哪些优势?

在安装和管理 SSL 证书时,SNI 改变了整个托管环境。 以下是其主要优势:

  • 多域名托管。 使用 SNI,您可以在单个服务器和 IP 地址上托管多个网站并确保其安全。 SNI 大大降低了托管成本,简化了 SSL 管理。
  • 灵活性。 SNI 提供了从服务器上添加或删除网站的灵活性,而无需重新配置服务器或获取额外的 IP 地址。
  • 更好地利用资源。 SNI 能够更好地利用 IP 地址等资源,而这些资源可能既稀缺又昂贵。 通过在同一 IP 上托管多个网站,可以减缓 IPv4(帮助我们连接网络的核心协议)的耗尽速度。

SNI 和 SAN 有哪些区别?

SNI 和 SAN 都是在一台服务器上支持多个 SSL 证书的方法。 不过,它们在提供这种支持的方式上有所不同。 SNI 和 SAN 的主要区别在于,SNI 是一种服务器端技术,而 SAN 则是一种证书功能。

如你所知,SNI 使网络服务器能在一个 IP 地址上托管多个证书。 当客户端连接到服务器时,SNI 允许服务器根据客户端在初始请求中提供的域名来决定使用哪个证书。

另一方面,SAN 是 SSL 证书的一种功能,它允许一个证书在一个安装下保护多个域名。SAN 证书包括一个附加域名列表(也称为主题备选名称),您可以用同一证书保护这些域名。

至于兼容性,大多数现代网络浏览器和服务器都支持 SNI 和 SAN。 然而,一些遗留系统可能与之不兼容。


通配符证书与 SNI 证书

通配符 SSL 证书在单个 SSL 证书下确保一个域及其所有子域(无限制)的安全。 通配符是 SSL 证书的另一项功能,就像 SAN 一样。 如果你的网站有多个子域,如new.yourwebsite.comblog.yourwebsite.com,那么使用通配符 SSL 会更方便、更经济。

SNI 证书并不存在,因为 SNI 并不是 SSL 证书的固有特性,而是服务器端的 TLS 扩展。 如果服务器支持 SNI,则可以在同一 IP 地址的多个域上添加任何 SSL 类型。


哪些浏览器支持 SNI?

SNI 现在与 99% 的浏览器和所有主要服务器系统兼容。 Chrome 浏览器、Mozilla、Opera、Safari 和一些不知名的浏览器都支持 SNI。 您可以在 Apache、Nginx、Ubuntu、Debian、CentOS 和许多其他常用系统上实施 SNI。 支持 SNI 的一些库包括 Open SSL、GnutTLS、Python、Oracle 和 Java。 当您需要在单个 IP 地址上保护多个网站时,请使用 SNI 来发挥您的优势。

如果网络浏览器不支持 SNI 会怎样?

如果网络浏览器不支持 SNI,就无法与使用 SNI 托管多个 SSL/TLS 证书的服务器建立安全连接。 因此,用户将无法访问网站。 此外,用户还会收到一条错误信息,显示相关网站不安全。


SNI 有什么缺点吗?

虽然 SNI 有很大的优势,但也有一些潜在的缺点。 其一是 SNI 可能比使用专用 IP 地址或非 SNI 解决方案更慢。 这是因为服务器必须执行额外的步骤来识别正确的 SSL/TLS 证书,以建立安全连接。

另一个缺点是,并非所有网络浏览器和服务器都支持 SNI。 如果使用传统浏览器或平台,可能会面临兼容性问题,从而导致错误或安全漏洞。


为什么 SNI 没有得到更广泛的普及?

出于安全考虑,一些组织倾向于使用专用 IP 地址。 这些措施可以提供额外保护,防止 IP 欺骗等网络攻击。 许多传统系统不支持 SNI,这也是一个因素。 但是,随着加密技术的普及,SNI 的应用也越来越广泛。


什么是加密 SNI(ESNI)?

加密 SNI(ESNI)是一项新技术,旨在解决与 SNI 相关的一些潜在安全漏洞。 ESNI 对 SNI 信息进行了加密,使其无法被第三方截获,从而保护了用户的隐私,并防止攻击者通过窥探 TLS 握手过程来确定用户访问了哪些网站。

网络浏览器和服务器尚未广泛支持 ESNI。

哪些浏览器支持 ESNI?

目前,火狐是唯一支持 SNI 的流行浏览器。


结论

本文从各个角度和方面介绍了服务器名称指示。 现在您已经知道 SNI 是什么了,您可以在您的网站和项目中采用它。 大多数系统都兼容 SNI,因为它是当今虚拟主机环境中必不可少的扩展。 HTTPS 是新的网络标准,SNI 可帮助用户从过时的 HTTP 协议中迁移出来。

立即订购 SSL 证书, 可节省 10% 的费用!

快速发行, 强大加密, 99.99% 的浏览器信任度, 专业支持和 25 天退款保证. 优惠券代码 SAVE10

撰写人

经验丰富的内容撰稿人, 擅长 SSL 证书. 将复杂的网络安全主题转化为清晰, 引人入胜的内容. 通过有影响力的叙述, 为提高数字安全作出贡献.