【问题标题】:SSL handshake error on a shared hosting account共享主机帐户上的 SSL 握手错误
【发布时间】:2016-12-05 11:49:39
【问题描述】:

我已经尝试与我的托管服务提供商沟通一个多月了,但我 99% 确信他们甚至没有阅读票证并以随机生成的字符串回复。

我花了数周时间寻找这个问题的答案,我看到一些关于更新 Java 或修改我无权访问的文件的提及。现在,这就是发生在我身上的事情。如果我尝试使用 W3C 验证我的域名或尝试验证 Twitter 卡,我不断收到 SSL 握手错误:

错误:由于 SSL 握手错误,获取页面失败。

我有一个来自 Comodo 的通配符 SSL。 如果我从 .htaccess W3C 验证中删除这些行,但 Twitter Card 没有:

RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^www.iadb.com$ [OR]
RewriteCond %{HTTP_HOST} ^iadb.com$
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

不幸的是,如果我更改此设置,https 不会以任何方式强制执行,更不用说它不能解决 Twitter 问题。同样,由于它是共享主机,我无法访问除 .htaccess 之外的任何配置 - 我将不胜感激任何帮助或提示,即使只是告诉我我是 SOL。

【问题讨论】:

  • 你到底在哪里出错? iadb.com 似乎工作正常,假设那是您的网站。

标签: .htaccess ssl wildcard


【解决方案1】:

使用openssl s_client 和数据包捕获的一些测试表明,如果您以iadb.com 访问主机,您的服务器会返回带有级别警告的TLS 警报unregognized_name,但使用www.iadb.com 作为主机名时不会发生TLS 警报.但是,由于您从 https://www.iadb.com 重定向到 http://iadb.com,您最终会得到一个包含此 TLS 警报的连接。

虽然 TLS 警报级别是警告,但只有某些实现(openssl 0.9.8,Java)将其解释为导致握手失败的错误。这就是您在 W3C 验证器中看到的示例:

IO Error: handshake alert: unrecognized_name

虽然这个客户端软件的行为显然是错误的,但服务器发送这个 TLS 警报也很糟糕。我的猜测是,这是因为服务器只配置了主机名www.iadb.com 而不是iadb.com,但您明确使用了后者的名称。自己解决问题的一种方法是仅使用www.iadb.com。另一种方法是修复服务器配置,根据您的描述只能由托管服务提供商完成。

【讨论】:

  • 我想这完全有道理。由于 SSL 有一个通配符,它​​可能未配置为正确处理裸域。我强迫 www。改用 htaccess。这可能会给我的搜索引擎带来问题,但从长远来看应该会得到回报。谢谢史蒂芬
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-02-11
  • 1970-01-01
  • 2018-11-29
  • 2015-02-03
  • 2016-08-08
  • 2016-04-13
  • 1970-01-01
相关资源
最近更新 更多