.htaccess - 共享主机帐户上的 SSL 握手错误

标签 .htaccess ssl wildcard

一个多月以来,我一直在尝试与我的托管服务提供商沟通,但我 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/

相关文章:

perl - LWP::UserAgent 更改 SSL 实现

java - 无法找到到所请求目标的有效证书路径 - 即使在导入证书后也会出错

java - java.util.Arrays.copyOf(U[], int, Class<? extends T[]>) 中通用通配符的优点

ssl - 如何为通配符多域证书生成 CSR

shell - rm -rf/base-dir-path/*/work 与/base-dir-path/*/*/work 不同

php - 阻止不需要的访客 : htaccess, iptables,或者只是数据库

javascript - 修改 .htaccess 文件后,网站的某些部分无法工作

javax.net.ssl.SSLException : SSLSocketFactory is null 异常

php - .htaccess 从网站根目录重定向到index.php

apache - 使用 mod_rewrite 重写 URL 以提供 RESTful URL