我正在尝试让Ruby的Net::HTTP实现与SNI一起工作。mail.google.com和gmail.com都位于同一个IP地址上,因此当通过SSL连接时,Google服务器需要知道要使用哪个证书。默认情况下,它会返回mail.google.com证书,如果您尝试实现WebFinger,这就是一个问题。WebFinger要求您检索https://gmail.com/.well-known/host-meta以获取LRDD信息,但是,出于安全原因,验证SSL证书至关重要信息。由于Google在这种情况下提供默认的mail.google.com证书,因此SSLpost_connecti
我目前有这段代码可以与服务器建立SSL连接:using(client=newTcpClient()){client.Connect(Hostname,Port);varcallback=newRemoteCertificateValidationCallback(ValidateServerCertificate);using(stream=newSslStream(client.GetStream(),false,callback)){stream.AuthenticateAsClient(Hostname);}}但是,我认为它不支持SNI,因为从SNI配置的服务器返回了错误的证书。
我希望能够检测浏览器是否支持SNI-ServerNameIndication.我希望将不合规的客户重定向到不同的地址。我正在考虑通过SSL加载一些内容并确保其安全传输。否则浏览器不支持SNI。这可以做到吗? 最佳答案 您可以设置一个支持SNI的服务器,提供两个主机名,在您需要SNI的地方和一个作为后备解决方案的地方,两者都提供它们托管的名称。类似的东西:https://www.example.com/name返回表示I'mwww.example.comhttps://www.example.net/name返回我是www.examp
我阅读了很多php联机帮助页,但只在上下文中找到了有关SNI支持的信息-http://www.php.net/manual/en/context.ssl.phpPHP做服务器时,是否可以获取浏览器发送的SNI?服务器是使用标准stream_socket_server()创建的,如eg中所述。本帖:http://www.php.net/manual/en/function.stream-socket-server.php#98616 最佳答案 是的,服务器端SNI支持在PHP>=5.6中可用这是relevantcommitgithub
Oracle文档似乎表明Java8默认自动发送SNI。Wireshark另有指示。我是PowerShell系统管理员,而不是Java开发人员,所以几乎可以肯定我忽略了一些东西。当与正确的信任keystore一起使用时,以下代码从所有不需要SNI的SSL网站返回状态200。当连接到多主机Apache服务器的默认SSL网站时,它也能很好地返回。但是,当被要求连接到非默认站点时,由于证书名称与站点名称不匹配,它会失败,因为它连接到默认站点。importjava.util.*;importjava.net.*;importjavax.net.ssl.*;importjava.io.*;publ
我们有一个使用ApacheCXF制作的客户端,使用特定的服务器(即:https://serverexample.com/application/webservice?wsdl)工作正常。但是服务器已经转移到另一个IP,现在它在同一个IP中有两个带有TLS和SNI(服务器名称指示)的SSL证书,现在我们的应用程序失败并出现此错误:javax.net.ssl.SSLHandshakeException:java.security.cert.CertificateException:NosubjectalternativeDNSnamematchingserverexample.comfou
关于securityandtrustworkinggroupforNHINDirect的讨论正在进行中regardingtheIP-to-domainmappingproblemthatiscreatedwithtraditionalSSL.如果HISP(由NHINDirect定义)想要为提供者托管数千个NHINDirect“健康域”,那么必须为每个域购买一个IP将“人为膨胀成本”。因为Apache和OpenSSL最近发布了支持SNI扩展的TLS,所以可以使用SNI作为在服务器端解决这个问题的方法。但是,如果我们决定允许NHINDirect传输层的服务器实现支持TLS+SNI,那么我们
我有一个Apache网络服务器,它运行多个具有不同证书和SNI的TLS虚拟主机。我可以使用curl访问各种虚拟主机(大概是SNI使它工作)。我也可以使用一个基本上只是URL上的openConnection()的小命令行Java程序来访问它们。在我的Tomcat应用程序中,基本相同的客户端代码访问与客户端相同的Apache服务器,但总是以默认证书(defaulthost.defaultdomain)而不是在它尝试访问的URL。(这会产生一个SunCertPathBuilderException——基本上它无法验证证书的证书路径,这当然是正确的,因为它是一个非官方证书。但是无论如何都不应该
我们希望在PHP客户端中启用SNI(服务器名称指示),该客户端连接到各种外部端点(SOAP/REST)。其中一些端点支持SNI作为服务器,但有些不支持SNI。在所有传出请求上启用SNI是否可以在不支持SNI的服务器上引起问题?看答案SNI是可选的TLS扩展名(“server_name”)。这意味着任何不明确支持此扩展程序的适当的TLS堆栈都会忽略它。SNI被广泛使用,所有现代浏览器都启用了它。这使人们有信心,如果您使用启用SNI的TLS,几乎所有站点都应该工作。可能还有一些站点使用损坏的TLS堆栈,这仅仅因为SNI存在而失败。但是,当现代浏览器访问时,这些站点也会失败。同样,如果不存在SNI,
ServerNameIndication(SNI)是一种TLS扩展,用于在TLS握手过程中传递服务器的域名信息。在未使用SNI之前,客户端在建立TLS连接时只能发送单个IP地址,并且服务器无法知道客户端请求的具体域名。这导致服务器需要使用默认证书进行握手,无法正确选择合适的证书。使用SNI扩展后,客户端在发送ClientHello消息时会包含所请求的服务器的域名。服务器根据该域名来选择对应的证书进行握手,从而实现了多个域名共享同一个IP地址并使用不同证书的能力。SNI对于虚拟主机或者CDN等场景特别有用,因为这些场景下,多个网站可能共享同一个IP地址。通过使用SNI,服务器能够正确地选择与域名