O servidor Apache HTTP é um dos servidores web mais populares do mundo. É um servidor HTTP de código aberto e plataforma cruzada que alimenta uma grande porcentagem dos sites da Internet. O Apache fornece muitos recursos poderosos que podem ser estendidos por meio de módulos adicionais.
Se você é proprietário de um site ou administrador de sistema, é provável que esteja lidando com o Apache regularmente. Uma das tarefas mais comuns que você provavelmente realizará é redirecionar o tráfego HTTP para a versão segura HTTPS do seu site.
Ao contrário do HTTP, onde as solicitações e respostas são enviadas e retornadas em texto simples, o HTTPS usa TLS e SSL para criptografar a comunicação entre o cliente e o servidor.
Outro fator importante para todos os proprietários de sites redirecionar de http para https com um certificado SSL é porque os motores de pesquisas como o Google estão mostrando a mensagem de sites seguros e não seguros.
Isso pode ser determinante para a classificação de SEO. Então, já passou da hora para forçar este redirecionamento.
[wpsm_titlebox title="Tópicos Deste Conteúdo" style="1"][contents h2 h3 h4][/wpsm_titlebox]
Índice
As vantagens de usar HTTPS em vez de HTTP
Habilitar o redirecionamento no arquivo Host Virtual é mais seguro e simples do que outras opções apresentadas neste guia. A configuração também é semelhante para todos os sistemas. Envolve a adição de uma parte específica do código ao arquivo Virtual Host. Veja a vantagens de ter um site rodando em HTTPS:
- Todos os dados são criptografados em ambas as direções. Como resultado, informações confidenciais não podem ser lidas se interceptadas.
- O Google Chrome e todos os outros navegadores populares marcarão seu site como seguro.
- HTTPS permite que você use o protocolo HTTP/2, o que melhora significativamente o desempenho do site.
- O Google favorece sites com HTTPS. Seu site terá uma classificação melhor se servido por HTTPS.
[wpsm_tabgroup]
[wpsm_tab title="Vá em frente"]Este guia mostra como redirecionar o tráfego HTTP para HTTPS no Apache.[/wpsm_tab]
[wpsm_tab title=""][/wpsm_tab]
[/wpsm_tabgroup]
Certamente, existem várias maneiras de redirecionar o site para HTTPS no Apache. Se você tiver acesso root ao servidor Linux onde o Apache é executado, a forma preferencial é configurar o redirecionamento no arquivo de configuração do host virtual do domínio. Caso contrário, você pode configurar o redirecionamento no arquivo .htaccessar do domínio .
Alguns painéis de controle, como o cPanel, permitem que você force o redirecionamento de HTTPS com alguns cliques do mouse.
Redirecionar HTTP para HTTPS usando host virtual
O Apache Virtual Hosts define as configurações de um ou mais domínios hospedados no servidor. Na diretiva de host virtual, você pode especificar a raiz do documento do site para criar uma política de segurança separada para cada site. E com isso, usar certificados SSL diferentes, configurar o redirecionamento e muito mais.
Normalmente, quando um certificado SSL é instalado em um domínio, você terá duas diretivas de host virtual para esse domínio. O primeiro para a versão HTTP do site na porta 80 e o outro para a versão HTTPS na porta 443.
Nos servidores baseados em Red-Hat, como CentOS e Fedora, os arquivos de host virtual são armazenados no /etc/httpd/conf.d
. Enquanto no Debian e seus derivados, como o Ubuntu, os arquivos são armazenados no diretório /etc/apache2/sites-available
.
Para redirecionar um site para HTTPS, use a Redirect diretiva conforme mostrado no exemplo abaixo:
<VirtualHost *:80> ServerName example.com ServerAlias www.example.com Redirect permanent / https://example.com/ </VirtualHost> <VirtualHost *:443> ServerName example.com ServerAlias www.example.com Protocols h2 http:/1.1 # SSL Configuration # Other Apache Configuration </VirtualHost>
Vamos explicar o código
Estamos usando duas diretivas de host virtual, uma para HTTP e outra para a versão HTTPS do site.
- VirtualHost *:80 - O servidor Apache escuta as conexões de entrada na porta 80 com HTTP para o domínio especificado.
- VirtualHost *:443 - O servidor Apache escuta as conexões de entrada na porta 443 com HTTPS para o domínio especificado.
As diretivas ServerName
e ServerAlias
especificam os nomes de domínio do host virtual. Certifique-se de substituí-lo pelo seu nome de domínio.
A linha destacada, Redirect permanent / https://example.com/
dentro do host virtual HTTP, redireciona o tráfego para a versão HTTPS do site.
Normalmente, você também deseja redirecionar a versão HTTPS www do site para não www ou vice-versa. Aqui está um exemplo de configuração:
<VirtualHost *:80> ServerName example.com ServerAlias www.example.com Redirect permanent / https://example.com/ </VirtualHost> <VirtualHost *:443> ServerName example.com ServerAlias www.example.com Protocols h2 http:/1.1 <If "%{HTTP_HOST} == 'www.example.com'"> Redirect permanent / https://example.com/ </If> # SSL Configuration # Other Apache Configuration </VirtualHost>
O código dentro do host virtual HTTPS que são as linhas destacadas, verifica se o cabeçalho da solicitação contém o domínio www e redireciona para a versão não www.
Sempre que você faz alterações nos arquivos de configuração, precisa reiniciar ou recarregar o serviço Apache para que as alterações tenham efeito:
Debian e Ubuntu:
sudo systemctl reload apache2
CentOS e Fedora:
sudo systemctl reload httpd
Redirecionar o site para HTTPS usando .htaccess
O .htaccess é um arquivo de configuração por diretório para o servidor web Apache. Este arquivo pode ser usado para definir como o Apache serve os arquivos do diretório onde o arquivo é colocado e para habilitar e, ou desabilitar recursos adicionais.
Normalmente, o arquivo .htaccess é colocado no diretório raiz do domínio, mas você pode ter outros arquivos .htaccess nos subdiretórios.
Este método requer que o módulo mod_rewrite
seja carregado no servidor Apache. Este módulo é carregado por padrão na maioria dos servidores. Se possível, prefira criar um redirecionamento no host virtual porque é mais simples e seguro.
Para redirecionar todo o tráfego HTTP para HTTPS, abra o arquivo raiz .htaccess e adicione o seguinte código a ele:
RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://example.com/$1 [L,R=301]
Aqui está o que o código significa:
RewriteEngine On - ativa os recursos de reescrita.
RewriteCond %{HTTPS} off - verifica a conexão HTTP e, se a condição for atendida, a próxima linha é executada.
RewriteRule ^(.*)$ https://example.com/$1 [L,R=301]- redirecionar HTTP para HTTPS com código de status 301 que significa: movido permanentemente.
Certifique-se de alterar o nome do domínio.
O exemplo abaixo tem uma condição adicional que verifica se a solicitação começa com www. Use-o para forçar todos os visitantes a usar a versão HTTPS não www do site:
RewriteCond %{HTTPS} off [OR] RewriteCond %{HTTP_HOST} ^www\.example\.com [NC] RewriteRule ^(.*)$ https://example.com/$1 [L,R=301]
Ao editar o .htaccess, você não precisa reiniciar o servidor porque o Apache lê o arquivo em cada solicitação.
Conclusão
No Apache, a maneira preferida de redirecionar HTTP para HTTPS é configurar o redirecionamento 301 no host virtual do domínio.
Embora muitos proprietários de sites prefiram o arquivo .htaccess porque pode ser acessado via FTP e fica na pasta raiz, geralmente em public_html
. Pessoas se sentem mais seguras em alterar este arquivo ao invés do terminal ssh.
Hoje em dia se o site ainda não tem um certificado SSL instalado para o domínio, os navegadores da web como: Chrome e Firefox exibem um alerta dizendo que o site não é seguro. As chances de o usuário continuar em um site não seguro são reduzidas e, dessa forma a audiência começa cair.
Não deixe que os browsers emitam este alerta e só tem uma alternativa: instalar um certificado SSL e criar o redirecionamento das URLs para HTTPS como já mostrado acima.