如何使用 apache 将 SSL 证书过期的域名重定向到新域名

如何使用 apache 将 SSL 证书过期的域名重定向到新域名

所以过去我曾经https://example.com。然后决定使用https://myotherexample.com而不是 example.com。所以我设置了服务器,将 DNS 指向该服务器,一切都很顺利。现在我想重定向https://example.comhttps://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 操作,包括重定向。

相关内容