什么是 SNI(服务器名称指示)?
解决方案
服务器名称指示
服务器名称指示(SNI)是 TLS 协议的扩展。 它允许客户端或浏览器在 TLS 握手开始时指示试图连接的主机名。这样,服务器就能在同一 IP 地址和端口号上显示多个证书。
以前,每托管一个 SSL 网站,服务器上都需要一个单独的 IP 地址,因为 443 端口(https)不能共享。 如果在某些服务器(例如 IIS)上尝试这样做,一个或两个网站都将无法运行。
启用 SNI 后,您可以减少用于使用 https 服务加密页面的内部和外部 IP 地址数量。
限制
您使用的网络浏览器必须支持 SNI。如果浏览器不支持 SNI,那么最好在配置 SNI 的服务器上设置一个默认证书,这样它就能提供一个默认证书,让不支持 SNI 的浏览器也能看到。
SNI 支持(浏览器和工具)
安卓手机默认浏览器--从 4.x 版(冰淇淋三明治)开始
安卓平板电脑默认浏览器 - 从 3.x 版(蜂巢)开始
黑莓 10 网页浏览器
谷歌浏览器 - 从 6.0 版开始
Internet Explorer - 从第 7 版开始(Windows XP 不支持 SNI)
Konqueror/KDE - 从 4.7 版开始
Mozilla Firefox - 从 2.0 版开始
OpenSSL - 从 0.9.8f 版开始
Opera - 从 8.0 版开始(必须启用 TLS 1.1)
Safari
SNI 支持(服务器)
Apache - 从 2.2.12 版开始
Apache Tomcat - 从版本 9 开始
IBM HTTP 服务器 - 从版本 9.0.0 开始
Jetty - 从版本 9.3.0 开始
微软互联网信息服务(IIS)--从 IIS 8 开始
ngix - 从 0.5.23 版开始
图书馆
Erlang - 从 r17 版本开始
Java - 从 1.7 版开始
Perl - 从 1.56 版开始
PHP - 从 5.6 版开始
Python - 从版本 2.7.9rc1 或 3.2alpha4 开始
QT - 从 4.8 版开始
Ruby - 从 2.0 版开始
不支持 SNI
以下系统不支持 SNI:
黑莓操作系统(基于 Java 的版本)
Mozilla NSS
视窗 XP
SSL/TLS 中的 SNI 证书:你需要知道的一切
什么是服务器名称指示?让我们用通俗易懂的语言来解释它的含义
我们知道你是来了解 SNI 证书的(实际上是指 SSL/TLS 证书及其与服务器名称指示协议的关系)--我们马上就会讲到。但在此之前,我们先想象一下你是一台网络服务器。(我们在这里是绝对认真的,所以请闭上眼睛,尽量做一个最好的服务器)。
现在,用户输入了一个他们想要访问的网站,而你,就像往常一样,试图与他们的网络浏览器握手言和,并促进与用户请求访问的网站的 HTTPS 连接。当你试图通过 IP 地址获取网站详细信息时,你遇到了一个大问题:你看到一个 IP 地址下托管了六个不同的网站!你不知道该怎么办。你一头雾水,抓耳挠腮,不知道他们想访问哪个网站。这对任何网络服务器来说都不是什么好事,不是吗?
这就是服务器名称指示(以及人们寻找的所谓 "SNI SSL 证书")来帮助你的地方。
那么,什么是服务器名称指示或 SSL 中的 SNI?
SNI是SSL/TLS协议的扩展,允许在单个IP地址上托管多个SSL/TLS证书。这是通过在 SSL/TLS 握手过程中插入 HTTP 标头(虚拟域)来实现的。通过这一过程,你(网络服务器)可以看到客户端(网络浏览器)请求的网站,从而为安全连接到正确的网站铺平道路。
用于 SSL/TLS 的 SNI 的优点
在使用 SNI 之前,无法在单个 IP 上托管多个 SSL/TLS 证书。因此,你必须为你想在网络服务器上托管的每个 SSL/TLS 网站购买单独的 IP 地址。当然,这样做的成本很高。但由于当时没有其他选择,人们别无选择。因此,数量有限(40 亿)的 IPV4 IP 地址开始迅速消耗。这带来了 IPV4 地址枯竭的巨大危险。耗尽是必然会发生的,但关键是要让耗尽的速度变慢,以便人们有足够的时间迁移到 IPV6。
这就是 SNI 所做的。现在,我们有超过 340 个十亿级的唯一 IPV6 IP 地址--即 340 万亿、万亿、万亿,或超过 340,282,366,920,938,000,000,000,000,000,000,000 - 它们似乎刚刚够用(目前)。J
SNI 和多域 (SAN) SSL 不是一样的吗?
从远处看,SNI 和多域 (SAN) SSL 证书似乎是一回事,但两者之间存在巨大差异,即使它们能帮助你实现同样的目标。
正如我们所见,SNI 允许你在一个 IP 地址下为多个网站托管多个 SSL/TLS 证书。这意味着每个网站都有自己的 SSL/TLS 证书。另一方面,多域 SSL 证书(SAN)允许在一个 IP 地址下使用单个 SSL/TLS 证书保护多个网站。
因此,可以同时使用 SNI 和 SAN。如果你想用单个 SSL 证书保护多个网站,SAN SSL 证书就是你的选择。如果你想为每个不同的网站使用不同的 SSL 证书,则需要实施 SNI。很简单,不是吗?
本文标签: # sni认证
发布评论