
Так что в прошлом я использовал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>
Я, очевидно, иду не в том направлении, но есть ли способ перенаправить домен SSL (https-версию домена) на новый домен с помощью Apache, без необходимости сохранять активный сертификат SSL на старом домене? Большое спасибо!
решение1
Это поведение, которое вы ожидаете. Представьте, что кто-то взломал ваш DNS и установил 301-редирект. Вы можете использоватьhttps://letsencrypt.org/для получения бесплатного сертификата и перенаправления клиентов до тех пор, пока старый домен не станет недоступным.
решение2
Я проголосовал за ответ Мэтта, но хочу выразиться более конкретно.
Перенаправление — это HTTP-вещь, реализованная как набор кодов статуса ответа (3XX) и определенного заголовка (Location). Это обычная HTTP-транзакция. HTTP в HTTPS возможен строго после успешного установления соединения TLS, а для TLS требуется действительный сертификат. Таким образом, нет действительного сертификата => нет TLS => нет HTTPS => перенаправление невозможно.
Сертификат с истекшим сроком действия недействителен, поэтому пока сертификат не будет заменен, невозможно выполнять какие-либо HTTP-действия, включая перенаправления.