一个多月以来,我一直在尝试与我的托管服务提供商沟通,但我 99% 确定他们甚至没有阅读票据并使用随机生成的字符串进行回复。
我搜索了数周来寻找这个问题的答案,我看到一些关于更新 Java 或修改我无权访问的文件的提及。现在,这就是发生在我身上的事情。如果我尝试使用 W3C 验证我的域名或尝试验证 Twitter 卡,我会不断收到 SSL 握手错误:
ERROR: Fetching the page failed because SSL handshake error.
我有来自 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。
最佳答案
使用 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
。另一种方法是修复服务器配置,根据您的描述只能由托管服务提供商完成。
关于.htaccess - 共享主机帐户上的 SSL 握手错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38681210/