Usando mod_rewrite para imitar hosts virtuais SSL?
-
08-06-2019 - |
Pergunta
Qual é a melhor maneira de reescrever de forma transparente uma URL em uma conexão SSL com o Apache 2.2?
O Apache 2 não oferece suporte nativo a vários hosts virtuais baseados em nomes para uma conexão SSL e ouvi dizer que o mod_rewrite pode ajudar com isso.Eu gostaria de fazer algo assim:
Eu configurei o servidor para que os sites possam ser acessados por
https://secure.example.com/dbadmin
mas eu gostaria de ter isso como https://dbadmin.example.com
Como configuro para que a regra Rewrite reescreva dbadmin.example.com para secure.example.com/dbadmin, mas sem exibir a reescrita na barra de endereço do cliente (ou seja,o cliente ainda verá apenas dbadmin.example.com), tudo em https?
Solução
Configure um único VirtualHost para servir tanto secure.example.com quanto dbadmin.example.com (tornando-o o único *:443 VirtualHost que consegue isso).Você pode então usar mod_rewrite para ajustar o URI para solicitações para dbadmin.example.com:
<VirtualHost *:443>
ServerName secure.example.com
ServerAlias dbadmin.example.com
RewriteEngine on
RewriteCond %{SERVER_NAME} dbadmin.example.com
RewriteRule !/dbadmin(.*)$ /dbadmin$1
</VirtualHost>
Seu certificado SSL precisará ser válido para secure.example.com e dbadmin.example.com.Pode ser um certificado curinga mencionado por Terry Lorber, ou você pode usar o assuntoAltName campo para adicionar nomes de host adicionais.
Se você estiver tendo problemas, primeiro configure-o em <VirtualHost *>
e verifique se funciona sem SSL.A conexão e o certificado SSL são uma camada separada de complexidade que você pode configurar depois que a reescrita do URI estiver funcionando.
Outras dicas
A menos que o seu certificado SSL seja do tipo "curinga" ou multi-site, não acho que isso funcionará.A reescrita será exibida no navegador e o nome na barra de endereço deve ser válido em relação ao certificado, ou seus usuários verão um erro de segurança (que eles sempre podem aceitar e continuar, mas isso não parece o que você gostaria ).
Mais aqui.
Existe o apaches mod_rewrite, ou você pode configurar o apache para direcionar https://dbadmin.example.com para path/to/example.com/dbadmin no servidor
<VirtualHost *>
ServerName subdomain.domain.com
DocumentRoot /home/httpd/htdocs/subdomain/
</VirtualHost>