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

python - 使用带有 TLS 的请求不会提供 SNI 支持

我正在使用请求与 django 应用程序进行通信,但是

当我尝试

我得到错误:

主机名“mysite.com”与“*.myhost.com”、“myhost.com”中的任何一个都不匹配

但是,当我查看浏览器或http://www.digicert.com/help/时,证书看起来又好又漂亮。

我的主人认为这是请求缺乏 SNI 支持(Github 似乎证实了这一点https://github.com/kennethreitz/requests/issues/749)。有没有人找到使用请求的解决方法?

0 投票
1 回答
3005 浏览

ssl - 在 directadmin 中设置 SNI

我在 directadmin 中设置 SNI 时遇到了一些问题。我已将 enable_ssl_sni=1 添加到我的 directadmin.conf 中,但仍然出现此错误:

但是 SNI 背后的整个想法是您不需要分配拥有的 IP?

所以我的问题是,如何使 SNI 在 Directadmin 中工作。那 enable_ssl_sni=1 应该禁用检查,但它没有这样做。在http://help.directadmin.com/item.php?id=284我根本看不到 enable_ssl_sni 选项?

0 投票
2 回答
576 浏览

ssl - CloudBees 上具有多个 SSL 证书 (SNI) 的多租户应用程序

我正在使用 Play 框架构建一个多租户应用程序并使用 CloudBees 托管它。该网站的一个关键功能是能够在注册过程中代表我们的客户购买 SSL 证书。

  • 注册时,用户向我们提供他们的自定义域名(即 customer.com)
  • 我们创建客户帐户并将 customer.com 与他们的客户 ID 相关联
  • 我们为我们的客户购买 SSL 证书并在我们的服务器上自动配置它

客户应该只需要担心将他们的域名指向正确的 IP 地址,而不是购买他们自己的 SSL 证书。

我们需要在运行时支持:

  1. 为典型请求解析http://customer.comhttp://www.customer.com
  2. 如果客户端没有自定义域,则解析http://customer.ourdomain.com
  3. 在结算过程中为我们客户的最终用户解决https://customer.com/payment、https://www.customer.com/paymenthttps://customer.ourdomain.com/payment具体取决于他们的域设置(子域或自定义域)

我试图弄清楚是否可以根据我们的 SSL 需求使用开箱即用的 CloudBees。我们假设 SNI 将满足我们的要求,但考虑到我们可能需要在单个 IP 上支持数百或数千个 SSL 证书,我正在努力确定最佳配置。

我的问题是:

  • 我们有哪些选择来支持这么多 SSL 证书?是否应该继续使用 SNI 和 AWS Elastic Load Balancing 探索 CloudBees,还是我离题太远了?(ELB 仅支持 10 个开箱即用的证书。)理想的过程将在注册期间为我们的客户完全自动化。

任何建议表示赞赏。

0 投票
2 回答
5125 浏览

apache - 每个带有 SSL 的 Apache 服务器有多个站点,显示带有 HTTPS 的错误站点

我有一个运行多个客户端站点的 Debian 服务器。其中大多数都没有运行 SSL,因此通过 HTTP 访问就可以了。

我有一位客户拥有 SSL 证书,并且通过 HTTPS 访问他们的网站也很好。

如果您尝试使用 HTTPS 访问其他站点之一,则会出现问题,您会被定向到具有 SSL 证书的其他站点。

例如,假设我们在服务器上有以下站点:

如您所见,charlie 是唯一使用 SSL 的,无论您访问 http charlie.net 还是 https charlie.net,它都可以正常工作。

http 到所有其他站点都很好,但是如果您要访问 https alpha.net,它最初会出现一个无效证书错误并让您继续,但是虽然它在地址栏中有 alpha.net,但它实际上显示浏览器中的 charlie.net 站点。

我已经研究了 SNI 以及是否有任何其他站点具有 SSL,我需要将它们全部放在特定的 IP 地址上(我需要尝试解决其他问题,因为我不知道该怎么做)但我不确定为什么会这样正在发生或我如何解决它。

以前有没有其他人遇到过这种情况,您是如何解决的?

非常感谢,

0 投票
1 回答
5711 浏览

python - Google App Engine 上 python 2.7 SNI 上的 urllib3 错误

我正在尝试使用 SNI 从托管在 Google App Engine 上的网站下载 HTTPS 页面。无论我使用什么库,我都会收到以下错误:

我尝试以多种方式解决该错误,包括使用 urllib3 openssl monkeypatch:

但是我总是遇到上面提到的相同错误。

有任何想法吗?

0 投票
0 回答
130 浏览

scala - 在 JDK < 8 的 TLS 握手中确定 SNI

我想解析 TLS (1.1/2) 握手并确定 SNI 信息。

JDK8 为此提供了功能。但我想要一个更直接和兼容的版本:

我开发了这个块,但它不能可靠地工作(有些浏览器可以工作,有些不能):

有人知道更好的方法吗?

谢谢!

0 投票
2 回答
4940 浏览

ssl-certificate - SNI(服务器名称指示)的默认证书

简短的介绍

对于 Windows Server 2012:如果客户端不支持 SNI,是否可以定义默认证书?

详细描述

我们目前正在配置一个 Windows Server 2012 - 由于技术原因 - 只有一个 IP。该服务器用于两个任务:

  1. SSTP 主机 (vpn.example.com)
  2. 单个 TLS 网站 (www.example.com) 的主机

因此,为相同的 IP 地址和端口定义了两个证书。当调用 443 端口时,几乎每个客户端都会提交 SNI 参数“server_name”。然后,服务器会使用此参数为连接选择正确的证书。

但是:带有 Internet Explorer 的 Windows XP 不支持 SNI,并且缺少参数“server_name”。因此,服务器必须做出猜测,返回哪个证书。在我们的例子中,它默认为 vpn-certificate 并且浏览器显示证书错误(因为证书的主机名“vpn.example.com”与 url “www.example.com”中的主机名不匹配)。

有没有办法建议服务器使用 www-certificate 作为默认值?

在我们的案例中,这将是一个完美的解决方案:

  1. 所有 www 请求都将获得 www 证书,即使它们不支持 SNI。
  2. 所有 SSTP 请求都会获得 vpn 证书,因为它们都支持 SNI。

这可以做到吗?

0 投票
2 回答
6291 浏览

c# - 来自 C# 的服务器名称指示

据我所知,.NET 似乎存在很大的限制,因为无法使用 C# 和 .NET 建立使用服务器名称指示 (SNI) 的 TLS 连接。我错过了什么还是我的理解正确?

有人知道我是否以及如何使用 OpenSSL.NET、libcurl.NET 或其他一些 3rd 方 .NET 库建立 SNI 连接?一些示例代码将不胜感激。

0 投票
1 回答
1762 浏览

ssl - 带有 SAN 的 azure 网站 ssl 标识为 *.azurewebsites.net

我正在尝试将网站移动到 Azure(Azure 网站)。我把所有东西都搬走了,除了 ssl 不工作。出现的错误说

You attempted to reach [subdomain].[domain].com, but instead you actually reached a server identifying itself as *.azurewebsites.net ...

我认为这可能与我的证书有关。该证书是通过 GoDaddy 获得的 UCC 证书(多 SAN)。当我将站点从旧服务器移到 Azure 网站时,我没有重新输入证书。旧服务器使用 Parallels 进行管理。这是我为移动证书所做的事情:

我在旧服务器上登录了 Parallels。我打开 SSL 屏幕,在那里我可以看到证书的 4 个部分(csr、私钥、证书、CA 证书)。我复制了每个文本的文本(包括---Begin Certificate------End Certificate---行。编辑:私钥以 开头---Begin RSA Private Key---和结尾---End RSA Private key),然后粘贴数据以创建 4 个 .txt 文件。然后我重命名了 txt 文件,这样我就有了 4 个名为CAcertificate.cercertificate.cerprivateKey.pemcert.cer. 它们都保存在 c:\ 目录(根目录)中。

然后我拉起 OpenSSL 并运行以下命令:

pkcs12 -export -in c:\certificate.cer -inkey c:\privateKey.pem -out c:\certificate.pfx -certfile c:\CAcertificate.cer

我输入了两次密码,然后弹出了一个 certificate.pfx 文件。

我将该文件上传到我的 Azure 网站。UCC 证书适用于 4 个子域。我将我的 Azure 网站设置为仅使用其中一个子域作为域名。上传文件后,我转到SSL Binding,选择该子域,将其与我刚刚上传的证书匹配,然后选择“SNI SSL”。我保存了它,一切看起来都很好。

不幸的是,当我浏览到子域时,我收到了我在开头列出的错误。

我设置了一个 CName 以从该子域转发到 Azure 网站。我还设置了一条 A 记录,以从该子域指向 Azure 网站的 IP 地址。除了 ssl 证书错误之外,该站点正在按我的预期启动。

我是否错误地生成了 .pfx 文件?我需要在 Azure 或我的域注册商中进行更改吗?我注意到我可以从平行面板下载一个 .pem 文件。它在一个文件中包含证书的所有 4 个部分。我不知道我能用它做什么。

0 投票
1 回答
137 浏览

web - SNI - 统计

我在网上做了深入的研究。但我找不到任何关于有多少网站实际使用 SNI 的统计数据

我唯一能找到的是哪些浏览器支持 SNI

有人可以说这是常见的解决方案吗?或者也许没有人使用它?

谢谢乔