Sem categoria

Redirecionar HTTP para HTTPS no Apache

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]

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:

  1. Todos os dados são criptografados em ambas as direções. Como resultado, informações confidenciais não podem ser lidas se interceptadas.
  2. O Google Chrome e todos os outros navegadores populares marcarão seu site como seguro.
  3. HTTPS permite que você use o protocolo HTTP/2, o que melhora significativamente o desempenho do site.
  4. 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.

  1. VirtualHost *:80 - O servidor Apache escuta as conexões de entrada na porta 80 com HTTP para o domínio especificado.
  2. 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/\ [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/\ [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.

O que os navegadores da Web Fazem?

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.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *