问题标签 [sni]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
84 浏览

https - 通过 HTTPS 连接一个子域,无需 SNI

我想https在网站中使用连接。问题是服务器正在处理一些子域(http://staging.example.com, http://beta.example.com, http://www.example.com),所以看来我应该使用SNI。但我只需要一个子域即可通过https( https://beta.example.com) 连接。没有SNI可以吗?

0 投票
0 回答
439 浏览

internet-explorer-9 - 为什么 SNI 不能在 IE 9 for Vista 上运行?

基于众所周知的文档,TLS SNI 适用于使用 IE 7 及更高版本的 Windows Vista 客户端及更高版本。我已经用 IE 9 在 Vista 上尝试了 TLS SNI,它确实按预期工作。

但是,客户报告说他们无法通过 Vista IE9 客户端上的 TLS SNI 连接到我们的网站。他可以使用非 SNI TLS 进行连接,也可以使用 iPad 从同一 LAN 连接到 TLS SNI。因此,他的计算机上似乎有东西阻止了 SNI。他检查了 Internet 选项,并检查了所有 SSL/TLS 选项。

阻止 SNI 工作的罪魁祸首是什么?它是防火墙和/或防病毒软件程序吗?哪些已知的通常会破坏 SNI?

0 投票
3 回答
6780 浏览

ssl - 在 windows xp 和 IE8 上运行支持 SNI 的站点的任何解决方法

这个问题被问了很多次并且有很好的答案,XP上的IE不支持

但是我们的问题是我们没有足够的公共 ip 来为基于 ssl 的单个 url 分配。我有一个非常基本的问题,我们可以在 windowsXP 和 IE8 上运行 SNI 站点(指向单个 ip)。

我们有一些解决方法,比如购买另一个 IPS 池,但这确实会花费我们很多。谢谢

0 投票
0 回答
448 浏览

android - 在 Android 上通过 SSL/HTTPS 使用 phonegap 文件传输时出现 SNI 主机名错误

我正在尝试在 phonegap 上使用 FileTransfer 插件,该插件在某些 Android 设备上运行良好,但在其他设备上,请求被取消并且服务器正在记录 SNI 错误:

这就是客户失败的原因。流被取消:

我已经尝试了一切,包括手动将正确的主机指定为主机头,但我没有看到任何结果。

有什么我想念的吗?

同样,完全相同的 JS 和服务器端代码在其他 Android 设备和 iOS 设备上运行良好。

0 投票
2 回答
3509 浏览

android - 如何使用 okhttp 禁用 SSLv3 回退

我的 android 应用程序依赖 SNI 来访问正确的服务器,因此它需要 TLS 并且不能与 SSLv3 一起使用。我正在使用 okhttp 和改造,服务器日志表明 TLS 握手突然切换到 SSLv3,并且可能会保持这种方式一段时间,由于缺乏服务器名称指示支持,导致主机名验证重复失败。

我了解在某些情况下(哪些情况?)okhttp 停止使用 TLS 并切换到 SSL 作为后备。但是,在 SNI 的情况下这是不可接受的,有没有办法禁用回退?

示例 apache 日志:

0 投票
1 回答
377 浏览

java-8 - SNIMatcher 未返回正确的证书

我有一台服务器,并且基于此示例添加了一个 SNIMatcher

http://docs.oracle.com/javase/8/docs/technotes/guides/security/jsse/JSSERefGuide.html#SNIExamples

我在 hosts 文件中添加了 example.com 和 example.org 为 127.0.0.1

当我访问 example.com 和 example.org 时,它们都获得了相同的 localhost 证书(我为 example.org 创建了一个单独的证书)

我的问题是附加 SNIMatcher 的正确方法是什么

我是否需要为每个拥有自己证书的虚拟主机创建一个单独的匹配器?(我这样做了,但我得到了一个 IllegalArgumentException,因为两个主机都具有相同的类型 0 (StandardConstants.SNI_HOST_NAME)

http://docs.oracle.com/javase/8/docs/api/javax/net/ssl/SSLParameters.html#setSNIMatchers-java.util.Collection-

所以我改变了我附加的方式,只是按照示例 (com|org) 的方式进行操作,但它为两者返回了相同的证书。只是想知道正确的方法是什么?

谢谢你

0 投票
2 回答
10636 浏览

java - SSLProtocolException:握手警报:unrecognized_name:客户端代码解决方法?

在检索 XML 数据的自定义 HTTP 客户端中,我收到 unrecognized_name 错误。不幸的是,类似问题的答案对我不起作用:

  • 我无法通过系统属性关闭 SNI 支持,因为我的代码在应用程序服务器内运行,我无法控制它
  • 我无法修复 Web 服务服务器配置(添加 ServerName)

现在,我的代码正在使用 commons httpclient 3.1,但我对替代方案持开放态度。这是我现在正在使用的删节代码:

我查看了 HttpClient,似乎可以实现类似于https://stackoverflow.com/a/14884941/3676401中提到的解决方法,但似乎有很多潜在的安全相关代码。

我很讨厌将大量代码转储到一个简单的客户端中。还有其他建议吗?

0 投票
4 回答
8667 浏览

.htaccess - 检测和重定向支持 SNI 的浏览器的最有效代码是什么?

说,我有一个网站mywebsite.com,使用 Apache Httpd 托管。现在我想要的是,只要有任何用户类型mywebsite.com,或者www.mywebsite.com如果浏览器支持 SNI,那么它应该重定向到https://www.mywebsite.comelse 重定向到http://www.mywebsite.com.

那么,实现它的最有效方法是什么?

0 投票
2 回答
2658 浏览

apache - 带有 SNI 的 Apache HTTPS 反向代理,代理上没有密钥

example1.com 和 example2.com 解析为 host0。host0 使用两个 VirtualHost 运行 Apache 反向代理。它将 example1.com 的请求委托给 host1,将 example2.com 的请求委托给 host2。

在所有地方使用http,这显然可以工作。

使用 https,我可以将 example1.com 和 example2.com 的密钥粘贴到 host0 上,然后让 host0 与 host1 和 host2 交谈 http 或 https。鉴于 SNI,这也应该有效。

我的问题:如果没有 host0 上的 example1.com 或 example2.com 键,它可以工作吗?我想避免 host0 能够执行中间人攻击。

如果我正确理解 SNI,则仅在客户端将所需的虚拟主机传达给 host0 后才会交换密钥材料。这应该是(?)足够的信息,Apache 基本上可以将连接转发到主机 1 或主机 2,而根本不需要查看传输的内容。这根本不需要密钥材料。

0 投票
1 回答
3634 浏览

sni - SNI 客户端如何在 CLIENT HELLO 中发送 server_name

我希望我在正确的地方问这个问题,它关于对 SNI 的理解

根据https://devcentral.f5.com/articles/ssl-profiles-part-7-server-name-indication#.U5wEnfmSzOz “引入SNI,客户端可以指明自己所在的服务器的名称尝试在握手过程中作为“客户端问候”消息的一部分进行连接”

我的问题是像浏览器这样的客户端或任何 HTTP 客户端(比如 java.net)如何在 CLIENT HELLO 中发送此服务器名称?客户端是自己做的还是你必须以编程方式将它添加到 https 请求(例如如何在 JAVA.net HttpsURLConnection 中)

从http://www.ietf.org/rfc/rfc4366.txt读取 “目前,唯一支持的服务器名称是 DNS 主机名”,因此主机名是 SNI 兼容客户端发送的 server_name 或客户端可以发送的任何其他名称..

我希望我很清楚,如果不清楚,请改进问题/措辞,或者如果不清楚,请告诉我谢谢