ubuntu - 如何使用 ssl Apache 将 www.subdomain 重定向到子域

标签 ubuntu ssl redirect apache2 wildcard

我想将 http://www.subdomain.domain.com/ 重定向到 https://subdomain.domain.com

首先,我将向您解释我有什么,然后我做了什么,以及发生了什么。

这是我的:

我有一个在 tomcat 上运行的 web 应用程序,我使用 Apache2 做该应用程序的代理。

我有一个域,我们称它为 mydomain.com,webapp 的主要 url 是 suba.mydomain.com (mydomain.comwww.mydomain.com 被用于另一件事)。我还有 *.mydomain.com 的 SSL 通配符。

但我希望这发生:

  • http://www.suba.mydomain.com 重定向到 https://suba.mydomain.com

这是我试过的:

我试图做一个重定向 301 从 http://www.suba.mydomain.comhttps://suba.mydomain.com 并做一个也重写(不同时)。

结果

当我键入 www.suba.mydomain.com 时,我已成功重定向到 https://suba.mydomain.com 但是当我尝试这样做时再次在同一个网络浏览器中显示如下错误:

Browser Error

这是因为网络浏览器尝试添加 https:// 并尝试加载 *.mydomain.com SSL 通配符,所以它不会有效.

所以在 Google Chrome 中,如果我转到 chrome://net-internals/#hsts 并删除 suba.mydomain.comwww. suba.mydomain.com 并再次尝试键入 www.suba.mydomain.com 我已成功重定向到 https://suba.mydomain.com 再次尝试,但如果我再次尝试这样做,它不会起作用。

我能做什么?谢谢!

最佳答案

根据您的描述,您的站点 suba.mydomain.com 似乎正在发送 HTTP Strict-Transport-Security带有 includeSubDomains 指令的响应 header 。当您随后访问 http://www.suba.mydomain.com 和您的Apache 重写规则在与服务器建立连接之前不会启动(这需要完成 SSL 握手)。

如果您确实在发送带有 includeSubDomains 的 HSTS header ,请查看删除它是否有帮助。

这是我怀疑正在发生的事情:

  1. 你访问http://www.suba.mydomain.com,你的重写规则在 Apache 将您重定向到 https://suba.mydomain.com
  2. https://suba.mydomain.com 正在发送 HSTS header ,很可能 使用 includeSubDomains,表明所有 future 通过不安全方式向 [*.]suba.mydomain.com 发出的请求 http://可以被浏览器升级为https://
  3. 当您再次访问 http://www.suba.mydomain.com 时,浏览器会将您重定向到 https://www.suba.mydomain.com因为缓存的 HSTS 设置。
  4. 您看到错误是因为 https://www.suba.mydomain.com 与您对 *.mydomain.com 有效的证书不匹配。在建立连接之前,您的 Apache 重写规则不会运行,这意味着接受证书警告。
  5. 像您所做的那样从 Chrome 的缓存中删除 HSTS 条目将清除石板,您可以访问 http://www.suba.mydomain.com 一次而不会出现警告,然后再遇到相同的问题问题。

关于ubuntu - 如何使用 ssl Apache 将 www.subdomain 重定向到子域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42308443/

相关文章:

javascript - 创建具有动态高度的 iframe

linux - 如何在 GNU/Linux 上设置 Subversion (SVN) 服务器 - Ubuntu

java - 尝试在 Ubuntu 上编译/运行 Java 代码,错误 : java. lang.NoClassDefFoundError: org/apache/pdfbox/pdmodel/PDDocument

ubuntu - 如何从 ubuntu 终端停止在本地主机上运行的 super 账本 Composer Playground ?

apache - 如何重写所有不包含短语的非 ssl 请求?

Git错误,无法访问,错误设置证书验证位置

linux - 使用自定义名称创建 screen session

java - 使用 curl 发布, postman 工作但 java 给出 SSL 错误

grails - grails应用程序重定向到以前的DNS

javascript - Greasemonkey 发出的重定向仅在重定向行之后调用 alert() 时才有效