Apache-2.2

如何使用 apache 將具有過期 SSL 證書的域重定向到新域

  • January 14, 2020

所以過去我使用https://example.com>。然後決定我想使用<https://myotherexample.com而不是 example.com。所以我設置了伺服器,將 DNS 指向該伺服器,一切都很好。現在我想將https://example.com>重定向到<https://myotherexample.com因此,使用舊地址的人將繼續訪問新站點。這適用於將埠 80 重定向到新域,但是當嘗試重定向埠 443(ssl 埠)時,apache 似乎需要舊域的有效 SSL 證書(即使我不再提供安全版本該地址的網站)。我的舊域的 SSL 證書已經過期,由於沒有任何東西可以保護,我想知道,我該如何進行這種重定向?

example.com 配置:

▽
&lt;VirtualHost *:80&gt;


       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
&lt;/VirtualHost&gt;

以及我需要重定向到新域的 SSL 版本:

&lt;VirtualHost *:443&gt;
       # 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/

       &lt;Directory /sites/example.com/html&gt;
               Options FollowSymlinks
               AllowOverride All
               Require all granted
       &lt;/Directory&gt;

       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

&lt;/VirtualHost&gt;

我顯然是以錯誤的方式解決這個問題,但是有沒有辦法使用 apache 將 SSL 域(域的 https 版本)重定向到新域,而無需在舊域上保留活動的 ssl 證書?非常感謝!

這是您期望的行為。想像一下,如果有人劫持了您的 DNS 並設置了 301 重定向。您可以使用https://letsencrypt.org/獲取免費證書並重定向客戶端,直到不再訪問舊域。

我贊成馬特的回复,但我想更明確地說明它。

重定向是一個 HTTP 事物,實現為一組回复狀態程式碼 (3XX) 和一個特定的標頭 (Location)。這是一個普通的 HTTP 事務。HTTPS 中的 HTTP 嚴格在 TLS 連接建立成功後才可以使用,並且 TLS 需要有效的證書。因此,沒有有效的證書 => 沒有 TLS => 沒有 HTTPS => 不可能進行重定向。

過期的證書無效,因此在證書被替換之前不能做任何 HTTP-ish 操作,包括重定向。

引用自:https://serverfault.com/questions/998824