Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache 为什么Firefox和Chrome坚持对手动输入的非SSL网站使用HTTPS_Apache_Google Chrome_Firefox_Redirect_Ssl - Fatal编程技术网

Apache 为什么Firefox和Chrome坚持对手动输入的非SSL网站使用HTTPS

Apache 为什么Firefox和Chrome坚持对手动输入的非SSL网站使用HTTPS,apache,google-chrome,firefox,redirect,ssl,Apache,Google Chrome,Firefox,Redirect,Ssl,我希望能得到一些帮助来了解情况:Firefox和Chrome都无法加载我的非SSL网站,比如subdomain.example.com,并出现以下SSL错误(均在ubuntu 14.04 i386上): FF30:ssl\u错误\u接收\u记录\u过长 Chrome 35:错误\u SSL\u协议\u错误 这是在我在父域上设置(并遵循)到SSL的重定向(302)后开始发生的,比如到。在浏览器上进行完全缓存清理后,它将恢复正常。但是,一旦我访问父域,我就会在子域上遇到问题 我从未使用“http

我希望能得到一些帮助来了解情况:Firefox和Chrome都无法加载我的非SSL网站,比如subdomain.example.com,并出现以下SSL错误(均在ubuntu 14.04 i386上):

  • FF30:ssl\u错误\u接收\u记录\u过长
  • Chrome 35:错误\u SSL\u协议\u错误
这是在我在父域上设置(并遵循)到SSL的重定向(302)后开始发生的,比如到。在浏览器上进行完全缓存清理后,它将恢复正常。但是,一旦我访问父域,我就会在子域上遇到问题

我从未使用“https://”方案前缀输入子域URL。我通常不会键入任何前缀,即使我显式地使用“http://”作为前缀,也会发生这种情况。不仅在地址栏上,链接也是如此

我非常确信子域上的非SSL站点没有任何问题

我想填写一份bug报告,但这不太可能是两种浏览器中的bug,更可能是我遗漏了什么

如果给定域上的网站支持SSL(或将http重定向到https),则假定子域上的网站也支持SSL,这是否有任何规则

我后来找到了SSL错误的原因。但问题仍然存在(现在消息被拒绝连接):

Apache web服务器配置为在端口80和443上侦听,但没有“SSLEngine on”子句。这有效地使它在端口443上提供普通HTTP服务


值得一提的是,这个Apache配置错误并不难犯。实际上,在默认的Ubuntu配置中(可能与Debian相同),只需启用/加载SSL模块(而不提供使用SSL的站点配置)。

我刚刚找到了原因。父域上的ssl站点包含以下STS响应标头:

Strict-Transport-Security: max-age=31536000 ; includeSubDomains

这会根据规范触发浏览器行为。

另一个可能导致这种情况的原因是来自
http://example.com
https://example.com
。当人们直接使用301尝试
mod_rewrite
/重定向配置时,这种情况可能会非常频繁(我认为最好使用302,因为这个原因)。我以前使用301重定向,但改为302。为什么301重定向会影响子域?@PerdoPedruzzi,你是对的,301不应该影响子域本身,但如果浏览器以前使用301访问过该子域,它会倾向于记住它(无论你后来做了什么更改)。这不是我的原因。我认为这与SPDY支持有关。显而易见的解决方案是在子域上也使用https。如果主域证书不支持通配符域,请从letsencrypt获取免费证书。此问题似乎与主题无关,因为它与编程无关。请参见帮助中心中的。也许,或者是一个更好的提问的地方。这不是关于编程,而是与软件开发密切相关。通常由程序员为web应用程序设置STS配置(在我的例子中,是在SpringSecurity上)。问题在于对HTTP协议特性的理解以及如何修复配置错误的webapp。但是,它也与系统管理/dev ops有关。