禁用 Apache2 中的 SSL 回退或重定向而不匹配证书

禁用 Apache2 中的 SSL 回退或重定向而不匹配证书

我的服务器上有多个虚拟主机,假设我提供

www.example.com
sub.example.com
www.example.nl

在我的 DNS 配置中,所有都指向同一个服务器。

在 apache2 配置中,有一个用于 http 的默认配置文件和一个用于 https 的默认配置文件,以及用于其他站点的附加虚拟主机。我希望所有近似匹配都重定向到www.example.com。所有特定站点都有证书。

我的文件看起来像这样

000-default.conf (redirects to https://www.example.com)
default-ssl.conf (serves https://www.example.com)
sub.example.com.conf (redirects to https://sub.example.com)
sub.example.com-ssl.conf (serves https://sub.example.com)
www.example.nl.conf (redirects to https://www.example.nl)
www.example.nl-ssl.conf (serves https://www.example.nl)

现在的问题是,任何其他请求(例如,对于be-creative.example.nl)都默认为第一个加载的配置。这适用于 http(000-default将匹配并重定向),但不适用于 https,因为我没有为 加载有效的证书be-creative.example.nl。因此我无法重定向,也无法提供有效的页面。

如果我禁用default-ssl.conf,请求将匹配sub.example.com-ssl.conf,并且仍然会提供错误的证书。

问题:我该如何优雅地处理这些没有证书的请求?如何在没有有效匹配证书的情况下重定向到 http?

答案1

我在自己的服务器 (CentOS,Apache 2.4) 上解决这个问题的方法是使用一个通用页面 (invalidssl.example.com),该页面带有有效的 SSL 证书(从 Let's Encrypt 获得一个免费证书),并在默认配置中设置该证书。这样,任何对非 SSL 域的 https 请求都将显示包含错误消息的通用页面。

回答你的问题:

向通过 https 请求页面的访问者提供内容(无论是页面还是转发响应)而不触发浏览器警告的唯一方法是使用请求域的有效 SSL 证书进行响应。我个人认为你没有理由遇到这个问题,因为现在很容易获得免费的 SSL 证书(请查看让我们加密!)。

相关内容