
Então, no passado eu useihttps://example.com. Então decidi que queria usarhttps://myotherexample.comem vez de exemplo.com. Então configurei o servidor, apontei o DNS para aquele servidor e tudo ficou ótimo. Agora eu queria redirecionarhttps://example.comparahttps://myotherexample.compara que as pessoas com o endereço antigo continuassem no novo site. Isso funciona bem para redirecionar a porta 80 para o novo domínio, no entanto, ao tentar redirecionar a porta 443 (a porta SSL), o Apache parece exigir que haja um certificado SSL válido para o domínio antigo (mesmo que eu não esteja mais servindo uma versão segura do site nesse endereço). Meu certificado SSL para o domínio antigo expirou e, como não há nada para proteger, fico pensando: como faço para fazer esse tipo de redirecionamento?
configuração exemplo.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>
E a versão SSL que preciso redirecionar para o novo domínio:
<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>
Obviamente, estou fazendo isso da maneira errada, mas existe uma maneira de redirecionar um domínio SSL (a versão https do domínio) para um novo domínio usando o Apache, sem a necessidade de manter um certificado SSL ativo no domínio antigo? Muito obrigado!
Responder1
Este é o comportamento que você esperaria. Imagine se alguém sequestrasse seu DNS e configurasse um redirecionamento 301. Você pode usarhttps://letsencrypt.org/para obter um certificado gratuito e redirecionar clientes até que o domínio antigo não seja mais acessado.
Responder2
Votei positivamente na resposta de Matt, mas quero declará-la mais explicitamente.
Redirecionar é uma coisa HTTP, implementada como um conjunto de códigos de status de resposta (3XX) e um cabeçalho específico (Local). Esta é uma transação HTTP comum. HTTP em HTTPS é possível estritamente após o estabelecimento bem-sucedido da conexão TLS, e o certificado válido é necessário para TLS. Portanto, nenhum certificado válido => sem TLS => sem HTTPS => nenhum redirecionamento possível.
O certificado expirado não é válido, portanto não é possível fazer nada HTTP até que o certificado seja substituído, incluindo redirecionamentos.