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