首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >测试URL是否需要SNI

测试URL是否需要SNI
EN

Stack Overflow用户
提问于 2016-02-26 06:15:53
回答 3查看 9.8K关注 0票数 4

我有通过HTTPS提供服务的a site,但是iTunes找不到它。我怀疑这与iTunes后端服务器是Java6,而Java6不支持SNI有关。SSL实验室似乎暗示我的网站确实需要SNI (参见this report,并搜索SNI),但我不知道为什么。我是不是误解了多域证书?我有多个站点运行在同一台服务器上,但我的理解是,只要所有的URL都在证书上作为主题替代名称列出,一切都会很好。

有谁知道检查URL是否需要客户端上的SNI支持才能访问它的好方法?遗憾的是,我没有安装Windows XP/Java6。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-02-27 11:29:56

一般而言,Nginx,尤其是您的站点,接受但不需要SNI。要测试这一点,您不能轻易地使用Oracle Java,因为它的cacerts 不包括 DST Root CA X3,它是由颁发站点证书的“Let‘s Encrypt”使用的根证书(最初);直到当前版本(8u74)的所有Oracle Java版本都是如此。Windows (因此Windows上的IE和Chrome )和Firefox确实有这个根证书;我不能说对于其他操作系统或浏览器。

要修复此问题,以便您可以轻松测试,请执行以下任一操作:

  • 使用OracleJava6,但修改JRE/lib/security/cacerts以添加DSTX3证书,该证书可以从操作系统或浏览器获得,也可以通过https://letsencrypt.org/certificates/上的链接添加到https://www.identrust.com/certificates/trustid/root-download-x3.html --除了该页非标准地仅提供证书的base64正文,因此必须手动添加PEM头和尾行,然后Java keytool才会导入它。
  • 按原样使用OracleJava6,但将应用程序(具有系统属性)配置为使用您创建的包含如上所述的DSTX3证书的自定义信任库。

H117使用在证书中包含此根证书的Java6版本。特别是,我使用OpenJDK6及其OpenJDK包(用于6、7和8),使用一个系统范围的CA“包”,其中包括DSTX3,这使得我可以轻松地执行此测试。我希望,但不能确认,其他RedHat变体也会做同样的事情。对于其他发行版和平台,我不能说;如果没有,请参阅上文。

使用wireshark或类似工具监视连接尝试,以查看ClientHello不包含SNI,但连接成功并成功用于HTTP请求。

如果您实际上想要与服务器通信,而不是测试它的SNI,只需省略最后的“monitor”步骤。

票数 1
EN

Stack Overflow用户

发布于 2016-02-26 12:52:16

来自SSLLabs的关于SNI的报告通常是正确的。如果您的证书包含所有可能的主机,则不需要SNI,这一理解也是正确的。但是,理论上不需要并不意味着您的服务器设置不需要SNI。

遗憾的是,我没有安装Windows XP/Java6。

鉴于您只指定了您没有的内容,我将假定您拥有可能使用的所有其他内容。一种简单的检查方法是openssl:

代码语言:javascript
复制
 # without SNI
 $ openssl s_client -connect host:port 

 # use SNI
 $ openssl s_client -connect host:port -servername host

比较两个openssl s_client调用的输出。如果它们服务的证书不同,或者如果没有SNI的调用无法建立SSL连接,那么您就需要SNI来获得正确的证书或建立SSL连接。

票数 6
EN

Stack Overflow用户

发布于 2016-07-11 05:54:56

检查站点是否依赖SNI的一个简单方法是:

代码语言:javascript
复制
openssl s_client -servername alice.sni.velox.ch -tlsextdebug -msg \
    -connect alice.sni.velox.ch:443 2>/dev/null | grep "server name"

如果您在该输出中看到以下内容,则表示该站点正在使用SNI。

TLS服务器扩展“服务器名称”(id=0),len=0

以上是对an answer at serverfault的总结。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35639482

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档