如何将所有 https 请求重定向到 https

Posted

技术标签:

【中文标题】如何将所有 https 请求重定向到 https【英文标题】:How to redirect all https request to https 【发布时间】:2018-09-15 08:42:41 【问题描述】:

我现在对所有这些重定向感到有些困惑。

我有一个主域domainA.com 及其所有子域都由通配符证书保护。但是我们有多个外国域名,例如domainA.chdomainA.co.uk。 这些其他域通过301 重定向到主域,当用户在其地址栏中键入以下内容之一时,它可以正常工作: domainA.ch, www.domainA.ch or http://domainA.ch

但如果他完全输入https://domainA.ch,用户会收到ERR_CERT_AUTHORITY_INVALID 消息。

一种解决方案是多域证书而不是单域证书,但这在财务上会有很大的不同。 另一种解决方案是让所有其他域成为一个虚拟主机,由letsencrypt保护并通过.htaccess重定向到主域。

两种解决方案对我来说都不是“很好”,有没有办法在浏览器握手之前重定向?

非常感谢

domainA.com.conf:前缀 = /var/www/vhosts/system/$pool 用户 = __ 组 = __ 听 = php-fpm.sock 听。所有者=根 听.group = __ 听模式 = 0660 chdir = / 下午 = 按需 pm.max_children = 5 pm.max_spare_servers = 1 pm.min_spare_servers = 1 pm.process_idle_timeout = 10s pm.start_servers = 1

【问题讨论】:

在您的 apache 配置中,您有不同的 domainA.ch 文件吗?例如 domainA.ch.conf 和 domainA.ch-ssl.conf? 不只是来自主域,所以 domainA.com.conf 您可以编辑您的问题并粘贴您的 domainA.com.conf 吗?删除敏感信息 完成了,我觉得它不会有帮助吗?! :) 您在使用网络面板吗?或者这是您在 /etc/apache2/sites-enabled/domainA.com.conf 中找到的配置?抱歉问,但从未见过这样的 apache 配置 【参考方案1】:

除非您对每个域都有不同的 IP 地址,否则每个域都可以拥有自己的证书。否则,您需要该单个 IP 地址的 SAN 证书。

【讨论】:

他需要 SAN 证书,但不需要 IP 地址。相反,每个 TLD 应该有一个 SAN。 澄清一下 - 单个 IP 地址只能提供 1 个证书。因此,如果您在一台机器上的 3 个不同 IP 地址上有 3 个域,那么您可以提供 3 个不同的证书。 使用 SNI,您可以在同一个 IP 上拥有多个证书。 (en.m.wikipedia.org/wiki/Server_Name_Indication)【参考方案2】:

您不能拥有匹配不同***域的通配符证书。

当客户端浏览器连接到https://domain.ch 时,它需要查看在主题中包含该域的证书或主题备用名称 (SAN)。

因此,如果没有正确的证书,您的 https 流量就没有简单的重定向配置。 如果您有很多 TLD 域只想重定向到您的全球站点,您应该看看其他选项。让我们加密证书可能是要走的路。

【讨论】:

以上是关于如何将所有 https 请求重定向到 https的主要内容,如果未能解决你的问题,请参考以下文章

如何将所有请求重定向到 https)://www.domain name.tld/

将所有 HTTP 和 HTTPS 请求重定向到单个 HTTPS URL

Nginx反向代理:将所有http请求重定向到https

将所有请求 HTTP 重定向到 HTTPS [重复]

如何使用 aws 弹性负载均衡器将 http 请求强制重定向到独立乘客中的 https?

如何通过 Web.config 或 C# 将所有内容重定向到 https://www。网站的版本?