所以过去我曾经https://example.com。然后决定使用https://myotherexample.com而不是 example.com。所以我设置了服务器,将 DNS 指向该服务器,一切都很顺利。现在我想重定向https://example.com到https://myotherexample.com因此使用旧地址的人将继续访问新网站。这对于将端口 80 重定向到新域来说很有效,但是当尝试重定向端口 443(ssl 端口)时,apache 似乎要求旧域具有有效的 SSL 证书(即使我不再在该地址提供安全版本的站点)。我的旧域的 SSL 证书已过期,而且由于那里没有任何可保护的内容,我很疑惑,我该如何进行这种重定向?
example.com 配置:
▽
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /sites/example.com/html
ServerName example.com
ServerAlias www.example.com
Redirect / https://myotherexample.com/
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
我需要重定向到新域名的 SSL 版本:
<VirtualHost *:443>
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request's Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
#ServerName www.example.com
ServerAdmin webmaster@localhost
DocumentRoot /sites/example.com/html
ServerName example.com
ServerAlias www.example.com
Redirect / https://myotherexample.com/
<Directory /sites/example.com/html>
Options FollowSymlinks
AllowOverride All
Require all granted
</Directory>
SSLEngine on
SSLCertificateKeyFile /etc/apache2/ssl/example.com.key
# this ssl is expired now
SSLCertificateFile /etc/apache2/ssl/example.com.crt
SSLCertificateChainFile /etc/apache2/ssl/example.com.IntermediateCA.crt
</VirtualHost>
我显然是用错了方法,但是有没有办法使用 apache 将 SSL 域(域的 https 版本)重定向到新域,而无需在旧域上保留活动的 SSL 证书?非常感谢!
答案1
这是您所期望的行为。想象一下,如果有人劫持了您的 DNS 并设置了 301 重定向。您可以使用https://letsencrypt.org/获得免费证书并重定向客户端直到旧域名不再被访问。
答案2
我赞同马特的回复,但我想更明确地表述它。
重定向是 HTTP 的一个功能,通过一组回复状态代码 (3XX) 和一个特定标头 (Location) 来实现。这是一个普通的 HTTP 事务。在成功建立 TLS 连接后,HTTPS 中的 HTTP 才有可能,并且 TLS 需要有效的证书。因此,没有有效证书 => 没有 TLS => 没有 HTTPS => 无法重定向。
过期的证书无效,因此在更换证书之前无法执行任何 HTTP 操作,包括重定向。