问题标签 [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 投票
2 回答
15369 浏览

apache-httpclient-4.x - 如何使用 Apache HTTPComponents HttpClient 在 HTTP 请求中启用 SNI?

我试图弄清楚如何将成功的 HTTP GET 请求发送到需要 SNI 的服务器。

我在SO和其他地方搜索,发现一些文章说JDK7现在支持SNI,以及Apache HTTP Components。

https://issues.apache.org/jira/browse/HTTPCLIENT-1119 https://wiki.apache.org/HttpComponents/SNISupport

相关SO文章:HTTPSURLconnection和Apache(系统)DefaultHttpClient之间的证书链不同

--

但是,我似乎找不到任何说明如何使其工作的文档。

这是我正在使用的代码...

当我运行它时,请求失败。

服务器在请求中需要 SNI,如果没有它,它会返回一个过期的证书,该证书具有错误的 CommonName,因此会被拒绝。

如果我使用 httpclient2 实例,即使用自定义 SSL 上下文设置以允许所有 hTTP 证书,则请求成功。但是,我不想在每天针对不同主机进行大量下载的服务器上启用该功能。

我正在使用 httpclient v 4.3.5

任何帮助表示赞赏。

谢谢。

0 投票
1 回答
344 浏览

android - 如何在 Android 中使用 HTTPS,共享 IP 主机

我需要什么:通过 HTTPS 连接获取 JSON 结果

我所拥有的:具有有效 SSL 证书的共享服务器

我想要什么:能够建立那个 HTTPS 连接,但我不能,因为当我用我找到的在线示例更改我的代码时,它永远不会工作......

细节:

我一直在寻找解决方案,但我发现了很多不同的东西,并且已经在我的代码中尝试了很多不同的组合,但没有任何效果。:(

我习惯于使用 PHP、MySQL、CSS、HTML 进行开发,但直到最近我才开始使用 Android (java) 并且我从未开发过任何东西(甚至没有“Hello world!”)。

我想要一个简单的应用程序,然后我雇了一个自由职业者(优秀的印度人,实际上......我认为自己在这个方面很幸运)。

因此,我最近为我的网站购买了 SSL/TLS 证书,该证书位于共享服务器上,我想更改我的 APP 上的代码,以便能够通过 HTTPS 连接并安全连接到我开发的 web 服务在 PHP 中。

一切都与 HTTP 请求完美配合,但是当我尝试在网上找到的一些不同的 HTTPS 建议时,没有任何效果。:(

永远无法就此得出结论。哈哈

这是我在大约 30 个不同屏幕中的一个的代码:

编辑:

这是进行一些尝试后的错误:

0 投票
1 回答
3677 浏览

.net - .NET SNI 支持

我有一个由我管理的另一个开发人员用 .NET 3.5 编写的 Web 服务 (asmx) API。我们最近从 Server 2008R2 迁移到 Server 2012R2,我决定使用 SNI 而不是每个证书都有一个 IP。

事实证明,我们的一位 API 用户在切换到 SNI 后不再能够连接到我们的 API。我发现他们使用的是 Server 2003,我认为这是它不再工作的原因。我继续为该站点分配了一个公共 IP,从而解决了该问题。当然,他们将其完全归咎于 .NET 框架。

他们的证明是这个链接: https ://connect.microsoft.com/VisualStudio/feedback/details/729925/net-4-4-5-sslstream-no-supports-the-tls-server-name-indication-sni

我有一个连接到我们的 API 并运行各种测试的测试项目设置,并且在转换后它工作正常。

任何人都可以对此有所了解吗?SoapHttpClientProtocol 是否使用 sslstream?

0 投票
0 回答
60 浏览

windows-phone-8 - 如何在 Windows Phone 8 SDK 上的 StreamSocket 上设置 SNI

是否可以在流套接字上的 ConnectAsync 中设置服务器名称指示 (SNI)?

0 投票
2 回答
9325 浏览

nginx - nginx 使用了错误的 ssl 证书

我将 nginx 设置为使用子域为多个站点提供服务。我将第一个设置为使用 ssl,如下所示:

每当连接到https://subdomain1.domain.tld时,这都很有效。但是,为另一个子域定义一个类似的规范以使用 ssl 使得 nginx 始终为用户提供 subdomain1.domain.crt,而不是提供足够的证书......

在 nginx 中启用了服务器名称指示 (SNI),我仔细检查了证书路径。可能是什么问题?

作为参考,我查看了 [1] 中描述的教程,它确实遵循了我的设置。

[1] https://www.digitalocean.com/community/tutorials/how-to-set-up-multiple-ssl-certificates-on-one-ip-with-nginx-on-ubuntu-12-04

完整的 nginx 配置文件如下:

另一个实际上是在为 gitlab 服务:

此外,我的 nginx.conf 相当标准:

0 投票
1 回答
489 浏览

ssl - Fiddler 如何删除 HTTPS 扩展?

我正在尝试剥离 TLS SNI 标头。如何使用 Fiddlerscript 操作 HTTPS 扩展?

0 投票
1 回答
957 浏览

powershell - Powershell WebClient 放弃遇到 SNI 错误

有没有人找到一种方法来强制 Powershell TLS 客户端不使用 SNI,或者通过服务器的 SNI 错误继续连接?

我正在尝试让 powershell 脚本从我们的 DHCP 服务器下载大量网络,并将其格式化以导入另一个系统。

我可以使用浏览器下载数据 - 观察与 Wireshark 的连接,我看到浏览器启动 TLS 握手,发送 SNI 指示,服务器响应“TLS 警报(级别:警告,描述:无法识别的名称)”,浏览器继续不受影响的 TLS 连接,下载成功。

为了调试请求,我通过本地代理(burp 套件,这是一个 Java 应用程序)运行连接,因此我可以看到加密隧道和 HTTP 请求的内容。这导致连接失败并且代理立即返回错误。显然,Java TLS 代码不愿意继续连接浏览器从容应对的 TLS 错误。如果我强制代理不在请求中包含服务器名称标识 (SNI),它会起作用(请参阅下面注释掉的调试代码)。

最后,从混合中删除代理,Powershell 使用的网络代码似乎也不愿意继续过去的错误——它发送相同的 SNI 指示符,接收相同的 TLS 错误,然后就挂起——直到 100 没有更多的数据包被交换秒过去了,然后连接用 FIN 包关闭,Powershells 返回超时错误:

Exception calling "DownloadFile" with "2" argument(s): "The operation has timed out"

我正在使用的代码是这样的:

非常感谢!

0 投票
1 回答
71 浏览

android - 在创建套接字时抑制 sslpeerunverifiedexception

我需要将 SNI 设置为我的 socketFactory。所以我一直在使用这个类SSLCertificateSocketFactory。在创建套接字时,它给了我一个sslpeerunverifiedexception服务器证书,因为没有 SAN 集。我可以如何抑制这个异常,并要求它允许创建套接字而不考虑服务器证书?

以下是我的代码:

0 投票
1 回答
413 浏览

wordpress - 基于浏览器 SNI 支持的重定向

我已经使用 SNI 在我的网站上实现了 SSL。现在我知道旧浏览器不支持 SNI 工具。我要问的是,当他/她尝试使用不支持 SNI 的浏览器访问我的网站时,是否可以将用户重定向到其他登录页面。

请建议我如何实施?我无法找到很多关于基于 SNI 的重定向的 heloful 信息。如果你们有一些代码片段可以用来实现这一点,那么请与我分享。

0 投票
1 回答
110 浏览

google-app-engine - 使用 GAE 检测/重定向不支持 SNI 的浏览器

我使用这个出色的页面在我的应用引擎应用程序上设置了 SNI/SSL 。

我希望我的网站能够为仍然使用不支持 SNI 的旧浏览器的人工作。理想情况下,我想检测这些旧浏览器并将它们重定向到https://myapp.appspot.com

我看过一些关于人们使用 Apache 重写规则执行此操作的帖子,但是您当然不能使用应用程序引擎来执行此操作。

如此无用的 GAE 文档指出

我们建议检测不支持 SNI 的浏览器并推荐支持它的浏览器。

但没有给我们任何线索如何做到这一点。

任何想法如何做到这一点?