只是想锁定一些信息,因为我已经询问了几个托管服务提供商,但我不确定我是否能得到足够清晰的答案。这是一个由两部分组成的问题:如何进行 HTTPS 到 HTTPS 重定向(任何网络服务器,我只是在寻找概念),以及建议的实现方式是什么。
假设我有一个包含多个 TLD 的域名:example.ca、example.net 和 example.com。我希望我的网站通过以下方式提供服务:https://example.com仅 .ca 和 .net 需要通过 http 和 https 进行重定向。
http(s)://example.ca -> https://example.com
http(s)://example.net -> https://example.com
http://example.com -> https://example.com
为了https://example.ca/.net->https://example.com重定向才能正常工作,我是否需要为 example.ca、example.net 和 example.com 分别准备一个 SSL 证书,即使 .ca 和 .net 仅用于重定向,且不托管任何内容?UCC/SAN SSL 证书是否可以覆盖所有 3 个域名?
据我所知,最简单的方法是:获取一个简单的共享主机方案,安装 UCC SSL 证书,并更新 Web 服务器配置,使所有 HTTP 和 HTTPS 流量重定向到https://example.com。 那是对的吗?
我见过一些 DNS 注册商(例如 GoDaddy)提供“域名转发”服务,但据我所知,这仅通过 http 提供。要使 https 重定向正常工作,我需要自己的服务器,并自行安装证书。
编辑:我不确定我是否可以给出答案,因为对于我是否需要所有域名的证书仍然存在一些困惑。@Xzenor 和 @davidgo 说我确实需要每个域名的证书,但@LTPCGO 说我只需要一个最终域名的证书(但需要一个通配符来包含子域名)。
答案1
您可以将对不安全域的获取转发到安全域,而不会出现问题。您可以在主机文件中的服务器级别使用重定向执行此操作,以便所有内容都从 提供example.com
。您需要为这个最终域 example.com 提供 SSL 证书,可以使用通配符 (*.example.com) 或特定子域。
在托管 example.com 的服务器上,您需要将所有流量重定向到 HTTPS,这取决于您的服务器。对于 Apache,您可以使用类似以下内容:
NameVirtualHost *:80
<VirtualHost *:80>
ServerName www.yourdomain.com
Redirect / https://www.yourdomain.com
</VirtualHost>
<VirtualHost _default_:443>
ServerName www.yourdomain.com
DocumentRoot /usr/local/apache2/htdocs
SSLEngine On
# etc...
</VirtualHost>
一旦一切正常,你应该考虑实施高速传输系统
答案2
从概念上讲,http 和 https 重定向是相同的。在每种情况下,它们的配置都类似。通常,这意味着浏览器访问旧网站并获得“300”系列响应以及新 URL。
由于涉及旧域名和新域名,因此您需要每个域名的证书。它们可以是由相同或不同提供商颁发的单独证书,也可以是涵盖所有名称的单个证书。
如果所有域名都指向同一个虚拟主机(这有点不寻常,但并非极为罕见的用例),那么您将需要一个涵盖所有域名的单一证书。
从技术角度来看,没有域名转发之类的东西。在大多数情况下,这是一种结构,其中所有 URL 都被重写,由检测域名的“catchall”虚拟主机提供服务。这对于 https 不起作用,因为 catchall 服务器需要 https 证书才能不出错。