如何使用 apache 將具有過期 SSL 證書的域重定向到新域
所以過去我使用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 證書?非常感謝!
這是您期望的行為。想像一下,如果有人劫持了您的 DNS 並設置了 301 重定向。您可以使用https://letsencrypt.org/獲取免費證書並重定向客戶端,直到不再訪問舊域。
我贊成馬特的回复,但我想更明確地說明它。
重定向是一個 HTTP 事物,實現為一組回复狀態程式碼 (3XX) 和一個特定的標頭 (Location)。這是一個普通的 HTTP 事務。HTTPS 中的 HTTP 嚴格在 TLS 連接建立成功後才可以使用,並且 TLS 需要有效的證書。因此,沒有有效的證書 => 沒有 TLS => 沒有 HTTPS => 不可能進行重定向。
過期的證書無效,因此在證書被替換之前不能做任何 HTTP-ish 操作,包括重定向。