Skip to content
欢迎扫码关注公众号

JEP 114: TLS Server Name Indication (SNI) Extension | TLS 服务器名称指示(SNI)扩展

摘要

增加对 TLS 服务器名称指示(SNI)扩展的支持,以允许基于 SSL/TLS 协议的更灵活的安全虚拟托管和虚拟机基础架构。

动机

由于 TLS 协议的限制,如果没有 SNI 扩展,HTTPS 服务器无法在虚拟托管基础架构和虚拟机基础架构中托管,其中多个域共享相同的 IP 地址。在云计算时代,这个问题变得更加严重。

SunJSSE 从 JDK 7 开始默认在客户端启用了 SNI 扩展。我们需要在 JDK 8 中支持服务器端的 SNI 扩展,以支持虚拟托管和云计算市场。

几乎所有主要的浏览器都支持 SNI 扩展(来自 Wikipedia):

  • Internet Explorer 7(Vista 或更高版本,不包括 XP)或更高版本
  • Mozilla Firefox 2.0 或更高版本
  • Opera 8.0 或更高版本(必须启用 TLS 1.1 协议)
  • Opera Mobile 在 Android 上至少为 10.1 beta 版本
  • Google Chrome(Vista 或更高版本。Chrome 6 或更高版本上的 XP,Chrome 5.0.342.1 或更高版本上的 OS X 10.5.7 或更高版本)
  • Safari 2.1 或更高版本(Mac OS X 10.5.6 或更高版本和 Windows Vista 或更高版本)
  • Apple iOS 4.0 或更高版本上的 MobileSafari
  • Windows Phone 7
  • Maemo

以下 Web 服务器支持 SNI 扩展(来自 Wikipedia):

  • 使用 mod_ssl 的 Apache 2.2.12 或更高版本(或者使用实验性的 mod_gnutls)
  • 如果编译时支持 TLS,则 Cherokee 支持
  • Lighttpd 1.4.x 和 1.5.x
  • Nginx

描述

  1. 定义接口,以便为特定的服务器名称指示选择特定的密钥管理器和信任管理器。

    对于虚拟托管基础架构,即在同一平台上托管具有相同 IP 地址和不同主机名的多个服务器,不同的服务器应使用不同的密钥管理器和信任管理器。

  2. 增加根据特定服务器名称指示将连接委托给虚拟机的能力。

    对于虚拟机基础架构,即在不同虚拟机中托管具有不同主机名但具有相同主机 IP 地址的不同服务器,主机应该能够根据特定的服务器名称指示将 SSL/TLS 连接委托给目标虚拟机。

替代方案

为了在 Java 计算环境中解决 TLS 问题,许多 ISP 不得不为每个 TLS/HTTPS 服务器单独分配一个新的 IP 地址,或者切换到使用其他 TLS 实现作为代理。

测试

  1. 需要验证新接口是否按预期工作。
  2. 需要验证实现是否不会以意外的方式破坏向后兼容性。
  3. 需要验证实现是否不会以意外的方式引入新的互操作性问题。
  4. 需要验证即使服务器在委托模式下工作以支持虚拟机,也不会对性能产生显著影响。

影响

  • JCP:对 JCP 无影响
  • 其他 JDK 组件:对其他 JDK 组件无影响
  • 兼容性:影响极小
  • 安全性:对安全性无影响
  • 可移植性:对可移植性影响有限
  • 用户界面:无图形用户界面
  • 文档:需要为新接口编写文档
  • 国际化:影响极小,可能会添加新的错误消息
  • 本地化:影响极小,可能会添加新的错误消息
  • 法律:无法律问题
  • 其他:已知无其他影响

Page Layout Max Width

Adjust the exact value of the page width of VitePress layout to adapt to different reading needs and screens.

Adjust the maximum width of the page layout
A ranged slider for user to choose and customize their desired width of the maximum width of the page layout can go.

Content Layout Max Width

Adjust the exact value of the document content width of VitePress layout to adapt to different reading needs and screens.

Adjust the maximum width of the content layout
A ranged slider for user to choose and customize their desired width of the maximum width of the content layout can go.