问题标签 [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.
android - 使用 SSLCertificateSocketFactory 的 Android HTTPS SNI 支持
我正在尝试使用 SSLCertificateSocketFactory.setHostname 添加 SNI 支持,使用 wireshark 我看到客户端和启用 SNI 的服务器之间的通信,CLIENT HELLO 转到服务器(设置正确的主机名),服务器以 Server Hello 响应并将证书发送到客户端但是在该客户端没有发送证书并且通信/握手停止之后,通过openssl命令openssl s_client -connect theclient -servername thehostname -cert thecertificate 一切顺利,握手成功..
我正在使用套接字,并且在 socket.startHandshake 上出现异常:IOException:javax.net.ssl.SSLHandshakeException:java.security.cert.CertPathValidatorException:找不到证书路径的信任锚。
这个IOexception SSLHANDSHAKEEXCEPTION对android开发者的解决方案是https://developer.android.com/training/articles/security-ssl.html#CommonProblems:
“从 InputStream 中获取特定的 CA,使用它来创建 KeyStore,然后使用它来创建和初始化 TrustManager。TrustManager 是系统用来验证来自服务器的证书,并且通过从 KeyStore 创建一个或更多 CA——这些将是该 TrustManager 信任的唯一 CA。
给定新的 TrustManager,该示例初始化一个新的 SSLContext,它提供了一个 SSLSocketFactory,您可以使用它来覆盖 HttpsURLConnection 中的默认 SSLSocketFactory。这样,连接将使用您的 CA 进行证书验证。”
现在 sslcontext 返回 SSLSOCKETFACTORY,我想使用 SSLCertificateSocketFactory (用于 sethostname 方法)做什么.. 我希望问题很清楚,如果不让我知道或随时让我更清楚
ios - 建立支持 SNI 的 TLS1.2 连接
我们正在尝试设置 TLS1.2 连接。已在 Macbook 中下载了最新的 OpenSSL。使用此代码创建 TLS1.2 连接。
但是,此特定行可能会导致问题。它使用 TLSv1。
尝试过TLSv1_2_client_method()
的方法,但它给出了以下链接错误:
架构 x86_64 的未定义符号:“_TLSv1_2_client_method”,引用自:sslconnect-7aa462.o 中的 _main
如果有人可以协助创建 TLS1.2 连接然后从目标 C 调用(如果套接字编程需要一些特殊处理),那将是一个很大的帮助。
[请注意,我不是 iOS 用户。我正在帮助一个团队解决问题。虽然团队有一些经验,但我自己也是套接字编程的新手。]
nagios - Nagios check_http 尝试使用 sni 监控多个服务器
我定义了以下服务:
当我从终端窗口运行命令时,一切正常。当我如上所示运行它时,我收到连接被拒绝错误。
我在这台服务器上有多个网站。所有站点都从 nagios 服务器正确解析。
reverse-proxy - HAProxy 反向代理 SNI 通配符
我需要一些有关我的 HAProxy 配置的帮助。我目前正在使用 HAProxy 1.5 通过更改的 DNS 条目反向代理它们来访问受地理封锁的网站。(https://github.com/trick77/tunlr-style-dns-unblocking)。
现在我偶然发现了一个问题,因为我必须代理一台服务器的许多子域(比如说 abc.xyz.com、def.xyz.com、...)。是否可以使用 *.xyz.com 之类的东西为我的配置创建通配符,并且它实际上适用于 SNI 和该域的所有子域?
非常感谢您!
python - 如何在 Python 请求中禁用 SNI?
我正在尝试requests
通过 SSL 访问远程服务器。不幸的是,它配置错误,以至于它在 SNI 握手期间响应错误TLSV1_UNRECOGNIZED_NAME
,浏览器会忽略该错误,但会在requests
.
这似乎与此问题相同,但在 Python 而不是 Java 中: SSL 握手警报:unrecognized_name error since upgrade to Java 1.7.0 `
该连接在不支持 SNI 的 Python 2 中完美运行。如何在 Python 3 中禁用 SNI 以使连接正常工作?
ssl - SSL 端口与 nginx 和 SNI 的统一
我的内部网络上有许多单独的 SSL 服务器,我想通过单个 IP 地址和端口向公共 Internet 公开它们。我的所有客户端都保证支持 server_name TLS 扩展(又名服务器名称指示或 SNI)。
我想象的是,nginx 将查看传入连接的 TLS 客户端 hello 消息,并确定将连接转发到哪个内部 IP。然后 nginx 充当 TCP 隧道,即 nginx 本身不参与任何 TLS 会话(即使它窥视传入的 TLS 客户端 hello 消息!),并且不需要 SSL 证书或自己的私钥。
换句话说,TLS 会话在客户端上启动,通过 nginx(它使用 TLS 客户端 hello 中的 server_name 信息多路复用目标)并在目标服务器中终止。
这可以用 nginx 完成吗?怎么做?如果没有,您是否知道其他一些可以做到这一点的代理软件?
最好的问候,
rkpr
ruby - 如果没有到主机名的路由,则在 ruby 的 net/http 中支持 SNI
我正在为一个项目编写集成测试代码,它在服务器上设置了一个新的安全虚拟主机。服务器支持 SNI。但是,由于测试代码是在开发环境中运行的,因此主机名的 DNS 记录没有正确设置。因此,为了检查是否返回了正确的证书,使用 curl 我必须这样做
或通过 openssl 实用程序
我设法找到了在 ruby 中重现用例的参考,如下所示
我最初想用纯 net/http 来实现它,但是除非我为 example.com 正确设置了 DNS(我无权访问 DNS 设置,所以我通过编辑我的主机文件来作弊),它不会无论我如何尝试都可以工作。考虑到我对 ruby 比较陌生,我想知道是否有办法只使用 net/http?
ssl - 如何使用 SNI 和 CCS 为 https 配置默认网站
我们使用 IIS8.5,只配置了默认网站,但在同一个负载平衡 IP 上指向它的数千个域。
我们计划为所有这数千个域提供 https (SSL)。由于服务器名称指示 (SNI) 功能,所有 .pfx 证书都将存储在中央证书存储 (CCS) 中,并将使用相同的 IP 绑定到同一个网站。
SNI 和 CCS 可以很好地用于此目的,但前提是我们在默认网站中为每个域添加显式竞价,这对于数千个域是不切实际的:
我尝试配置默认的 https 协议绑定,与默认的 http 协议绑定方式相同,使用 sslFlags="3",即 SNI+CCS:
使用上述配置,不会向任何浏览器提供 SSL 证书。
有没有其他方法可以使用 SNI 和 CCS 为 https 配置默认网站?
我真的很感激任何帮助我指出正确的方向。
谢谢!
吉尔赫姆
android - Google App Engine 自定义 SSL 和 Android SNI + VIP?
我在 GAE 上启动并运行了一个应用程序,购买了我的 SNI 插槽,安装了 SSL 证书,并且 SSL 证书在桌面 chrome、safari、firefox 和所有 iOS 设备上都可以正常工作。
出于某种原因,Android 返回一个错误,显示“此证书不是来自受信任的权威机构”,但随后它将 COMODO 和详细信息列为 CA?
在 Google SSL 设置中,我只有 SNI 证书选项可供服务(我在教程中看到我可以购买的 SNI + VIP)。我想知道Android是否不支持SNI,我是否需要购买SNI + VIP才能使SSL适用于Android?
具有讽刺意味的是,它托管在 GAE 上,但 Android 是唯一存在问题的平台;)
php - cURL 在带有 SNI 的 Web 服务器上不起作用
我的服务器上安装了一个 RSS 阅读器 Web 应用程序,它通过 SNI (nginx) 全时使用 TLS。我正在尝试在 cron 中设置 curl 命令以自动刷新提要,但我遇到了问题。
运行 RSS 阅读器为 cron 作业提供的命令:curl -L -s --user-agent 'Fever Refresh Cron' -k 'https://fever.cconover.com/?refresh'
我在我的 nginx 服务器上获得了默认主机的 HTML,而不是来自我的 RSS 阅读器的正确响应。
运行curl -I https://fever.cconover.com?refresh
我得到以下结果:
curl: (51) SSL: no alternative certificate subject name matches target host name 'fever.cconover.com'
这只发生在我在托管 RSS 阅读器的服务器上运行这些命令时。如果我从任何其他机器上执行它们,它们就会正常工作。
我检查了我的服务器对该地址的 IP 是否不正确,但运行ping fever.cconover.com
提供了我的服务器的公共 IP。
我最近从一台服务器迁移到该服务器,我认为该服务器的配置方式与该服务器相同,并且在旧服务器上运行良好。不幸的是,我无法再访问旧服务器,因此无法比较两者。但是,我知道这些确切的命令过去可以正常工作。
我怎样才能解决这个问题?