WordPress HTTPS, SSL e TLS – um guia para administradores de sites

Publicados: 2021-02-01

Quando você visita um site, seu navegador (também conhecido como cliente ) envia uma solicitação HTTP para um servidor web. Depois que o servidor da Web envia uma resposta HTTP , o navegador pode renderizar a página na tela. No entanto, o tráfego HTTP tem um problema; é um protocolo de texto simples. Isso o torna suscetível a bisbilhotar e intrometer-se.

Se um invasor estiver na mesma rede que você, ele poderá interceptar e ler seu tráfego HTTP. Eles também podem modificar suas solicitações ao servidor, bem como as respostas do servidor para você. Isso é conhecido como um ataque Man-in-the-Middle (MitM). Isso pode acontecer facilmente em WiFis públicos, como os de lobbies de hotéis e espaços públicos.

É por isso que um site deve estar em HTTPS – para que o tráfego não possa ser interceptado. Este artigo explica o que são HTTPS, SSL e TLS. Ele também explica como você pode configurar seu site WordPress para funcionar em HTTPS.

Índice

  • O que é SSL e TLS?
  • O que é HTTPS?
    • Como funciona o HTTPS?
      • O aperto de mão TLS
      • As chaves pública e privada (o par de chaves)
  • Eu realmente preciso de HTTPS no meu site WordPress?
    • Obtendo um certificado HTTPS TLS (também conhecido como certificado SSL)
    • HTTPS em hospedagem compartilhada e gerenciada do WordPress
  • Configurando o HTTPS do WordPress
    • Configurando o servidor web
    • Configurando o URL do WordPress para HTTPS
    • Aplicando o TLS no painel do WordPress (dicas de bônus)
  • Adicionando HTTP Strict Transport Security (HSTS)
    • Configurando o HSTS no servidor web
    • Cifras TLS
    • Meu WordPress é executado em HTTPS, é seguro?

O que é SSL e TLS?

Quando a Internet começou a crescer, ficou óbvio que precisávamos de um mecanismo para transferir informações com segurança entre um cliente e um servidor sem que ninguém pudesse espionar ou modificar o tráfego - digite SSL ou Secure Socket Layer. SSL é um protocolo de segurança da Internet, desenvolvido pela Netscape em 1995 para resolver esse problema.

Mais especificamente, o SSL se propôs a realizar o seguinte:

  • Criptografia — para criptografar o tráfego para que ele não possa ser interceptado por terceiros não autorizados por meio de espionagem,
  • Autenticação — para garantir que o servidor com o qual o cliente está falando é de fato o servidor que eles dizem ser,
  • Integridade — para garantir que os dados enviados entre o cliente e o servidor não sejam modificados por outra pessoa ao longo do caminho.

No entanto, com o tempo, os pesquisadores de segurança identificaram vários problemas de segurança no SSL. Portanto, o SSL foi substituído pelo TLS (Protocolo de Segurança da Camada de Transporte). Embora as diferenças ocultas entre SSL e TLS sejam drásticas, o objetivo do TLS permanece praticamente o mesmo.

NOTA: você pode ver frequentemente o SSL sendo usado para se referir ao TLS. SSL é um protocolo legado e não é mais seguro de usar. No entanto, devido à sua popularidade, muitos ainda usam SSL como um acrônimo, mas eles significam TLS .

O que é HTTPS?

HTTPS, ou Hypertext Transfer Protocol Secure é uma versão segura do protocolo HTTP. O HTTPS conta com o Transport Layer Security (TLS), um protocolo aprimorado e mais seguro do que o usado anteriormente, o Secure Socket Layer (SSL). O TLS fornece criptografia, autenticação e integridade para solicitações e respostas HTTPS.

Você pode pensar em HTTPS como solicitações e respostas HTTP (essa é a versão em texto simples do protocolo) passando por um túnel TLS. O termo técnico para isso é encapsulamento . É pertinente observar que o TLS pode ser usado para encapsular outros protocolos, não apenas HTTP.

Você pode identificar sites que usam HTTPS observando o início da URL (começa com HTTPS) na barra de navegação do navegador ou pelo cadeado verde. Se você estiver navegando em um site em HTTP, os navegadores o marcarão como Não seguro .

Sites HTTP marcados como não seguros

Como funciona o HTTPS?

Quando você solicita uma página da Web usando HTTPS, seu navegador e o servidor da Web iniciam um processo chamado TLS handshake . O handshake TLS é uma maneira de o cliente e o servidor decidirem se e como devem se comunicar. Durante o handshake TLS, o cliente e o servidor fazem o seguinte:

  • decidir sobre a versão do protocolo TLS a ser usada (TLS 1.0, 1.2, 1.3…),
  • concordar em quais conjuntos de cifras (um conjunto de algoritmos de criptografia usados ​​para estabelecer comunicações seguras) usar,
  • autenticar a identidade do servidor,
  • gerar chaves de criptografia para usar após a conclusão do handshake, a fim de se comunicar com segurança.

O aperto de mão TLS

Durante o handshake TLS, o servidor envia ao cliente seu certificado para que o cliente verifique se pode autenticar o servidor. Um certificado é semelhante a um passaporte - é emitido por uma autoridade central confiável chamada Autoridade de Certificação (CA), que estabelece de forma independente a identidade do site e pode ser comprovada ao seu navegador.

As chaves pública e privada (o par de chaves)

O certificado TLS (geralmente chamado de certificado SSL) que o servidor da Web envia ao cliente contém a chave pública . A chave pública é uma das duas chaves especiais chamadas keypair . Um par de chaves consiste em duas chaves; a chave pública e a chave privada . Enquanto a chave pública é compartilhada com os clientes, a chave privada é mantida em segredo no servidor e nunca é divulgada. O par de chaves é forjado em conjunto.

O par de chaves pública e privada tem uma relação particularmente interessante — sem conhecer a chave privada do servidor (isso é secreto e somente o servidor deve saber), um cliente pode criptografar dados usando a chave pública do servidor que o servidor pode descriptografar usando sua chave privada .

Se isso soa confuso, pense nisso como se o “servidor” enviasse ao seu “navegador” uma mala aberta (chave pública) protegida com um cadeado – uma vez que você coloca algo na mala e tranca o cadeado, apenas o “servidor” com o chave para o cadeado (chave privada) pode ver o que está dentro.

Eu realmente preciso de HTTPS no meu site WordPress?

sim. Não importa que tipo de tráfego seu site esteja atendendo (seja informações de identificação pessoal (PII), dados do titular do cartão ou fotos de gatos), não há absolutamente nenhuma razão pela qual você não deva veicular seu site por HTTPS.

Em primeiro lugar, quando você executa seu site em HTTP, os hackers podem facilmente roubar suas senhas e credenciais do WordPress e invadir seu site. Eles podem fazer tudo isso usando ferramentas disponíveis gratuitamente.

Além dos benefícios de segurança e uma melhor experiência do usuário, o novo protocolo HTTP/2, que oferece vários benefícios de desempenho, não pode ser usado sem TLS nos navegadores da web. Além disso, o HTTPS também possui benefícios de Search Engine Optimization (SEO) e faz parte do algoritmo de classificação de pesquisa do Google.

Obtendo um certificado HTTPS TLS (também conhecido como certificado SSL)

Para configurar o HTTPS, você precisará de um certificado TLS se estiver configurando tudo sozinho. Embora você veja dezenas de ofertas de certificados TLS pagos, você pode obter um certificado TLS gratuito de uma Autoridade de Certificação sem fins lucrativos chamada Let's Encrypt. Não há absolutamente nada diferente entre um certificado que você obtém da Let's Encrypt gratuitamente e um pelo qual você paga.

HTTPS em hospedagem compartilhada e gerenciada do WordPress

Observe que, para soluções de hospedagem gerenciada ou compartilhada, seu provedor de hospedagem pode ou não cobrar pela adição de HTTPS — se for esse o caso, antes de desembolsar dinheiro por um certificado, pergunte ao suporte ao cliente se você pode usar um certificado Let's Encrypt com seus serviço em vez disso. Os fóruns da comunidade Let's Encrypt também são um ótimo recurso que pode ajudá-lo.

Configurando o WordPress HTTPS (impondo TLS em seu site WordPress)

Existem algumas maneiras de aplicar o TLS em seu site WordPress, dependendo da sua configuração. Na maioria dos casos, você configuraria seu servidor web para redirecionar todo o tráfego HTTP para HTTPS (consulte o gerador de configuração SSL da Mozilla.

Você também precisa configurar o WordPress para ouvir HTTPS. Você pode fazer isso com plugins como Really Simple SSL ou WP force SSL. Neste exemplo, veremos como fazer isso sem usar plugins adicionais.

Configurando o servidor web

Atenção

  • Tenha cuidado ao copiar/colar as configurações do servidor web e certifique-se de saber exatamente o que elas estão fazendo consultando a documentação do seu servidor web
  • Você pode encontrar muitos exemplos on-line usando %{HTTP_HOST} (Apache HTTP Server) ou $http_host (Nginx) - ambos podem tornar seu site suscetível a ataques de cabeçalho de host HTTP - em vez disso, digite seu nome de host em sua configuração como visto abaixo.

Se você estiver usando o Nginx, poderá configurar o seguinte:

server {
  listen 80;
  server_name example.com www.example.com;
  return 301 https://example.com$request_uri;
}

Como alternativa, se você estiver usando o Apache HTTP Server, poderá configurar o seguinte:

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteCond %{HTTPS} off
  RewriteRule ^(.*)$ https://www.example.com%{REQUEST_URI} [L,R=301]
<IfModule>

Configurando o URL do WordPress para HTTPS

Depois de habilitar o HTTPS em seu servidor web, você também precisará configurar o WordPress. Em teoria, você pode fazer isso manualmente: basta alterar o endereço do WordPress e o endereço do site nas configurações gerais do WordPress. Você também precisa fazer uma pesquisa e substituir no banco de dados para alterar todos os links do seu site de HTTP para HTTPS.

[Captura de tela]

Portanto, provavelmente é muito mais fácil usar um plugin para mudar seu site WordPress para HTTPS. Você pode usar um plugin popular como o Really Simple SSL para ajudá-lo no processo.

Aplicando o TLS no painel do WordPress

O TLS só é útil se estiver sendo usado. Como tal, você deseja garantir que seu site WordPress não apenas suporte TLS, mas também o aplique. Como o painel do WordPress deve sempre ser acessado por HTTPS, o WordPress inclui a opção de configuração especial FORCE_SSL_ADMIN, que pode ser definida como verdadeira em wp-config.php.

define('FORCE_SSL_ADMIN', true);

Atenção

  • Dependendo da configuração e configuração do seu site (especificamente, se você estiver usando um proxy reverso), isso pode fazer com que as solicitações ao seu painel do WordPress entrem em um loop de redirecionamento infinito. Para obter mais informações sobre como corrigir isso, consulte a documentação do WordPress e sempre teste suas alterações em um ambiente de teste antes de colocá-las em produção.
  • Além disso, verifique se você já tem o TLS configurado e funcionando corretamente antes de definir FORCE_SSL_ADMIN como verdadeiro.

DICA DE BÔNUS 1: Adicionando HTTP Strict Transport Security (HSTS)

Embora redirecionar todo o seu tráfego para HTTPS seja uma ótima jogada, infelizmente, os invasores ainda podem ter alguns truques na manga. Um ataque conhecido como faixa SSL permitiria que um invasor enganasse o navegador para navegar no site em HTTP em vez do HTTPS seguro, derrotando efetivamente seu trabalho duro.

Para mais detalhes (altamente técnicos) sobre ataques de tira SSL, assista à palestra de Moxie Marlinspike abaixo.

Como resultado, os navegadores agora implementam HTTP Strict Transport Security, ou HSTS. O HSTS nada mais é do que um simples cabeçalho HTTP que informa ao navegador que esse site em particular nunca deve ser acessado por HTTP, derrotando qualquer ataque de tira SSL.

Configurando o HSTS no servidor web

Atenção

  • Não ative o HSTS até que você esteja confiante com o HTTPS — todos os visitantes que receberem esse cabeçalho HTTP só poderão visualizar seu site por HTTPS
  • Sempre defina o atributo max-age — opcionalmente, você pode optar por definir um valor baixo na primeira vez que implantar o HSTS (para limitar possíveis problemas) e aumentá-lo quando estiver mais confiante usando o HSTS

Se você estiver usando o Nginx, poderá configurar o seguinte dentro do bloco do servidor escutando na porta 443:

# HSTS (ngx_http_headers_module is required) (63072000 seconds)
add_header Strict-Transport-Security "max-age=63072000" always;

Alternativamente, se você estiver usando Apache HTTP Server, você pode configurar o seguinte em seu VirtualHost escutando na porta 443:

# HTTP Strict Transport Security (mod_headers is required) 
(63072000 seconds)
Header always set Strict-Transport-Security "max-age=63072000"

Dica de bônus 2: configurando cifras TLS

Para garantir que a transferência de dados entre o navegador e o servidor seja segura, ambas as partes concordam em fazer uso do que é conhecido como conjunto de cifras — uma combinação de algoritmos de autenticação, criptografia e código de autenticação de mensagem (MAC) — para negociar as configurações de segurança , bem como para transferir dados com segurança.

Infelizmente, muitas cifras legadas têm vulnerabilidades de segurança e não são mais seguras para uso. Embora decidir quais cifras usar seja um negócio complicado, o Mozilla SSL Configuration Generator torna muito fácil escolher um conjunto de cifras TLS que atenda às suas necessidades. Sempre que possível, tente usar os perfis modernos ou intermediários, no entanto, dependendo do seu caso de uso, especialmente se você precisar dar suporte a navegadores legados ou atender aos requisitos regulatórios e de conformidade, talvez seja necessário usar configurações de conjunto de criptografia ligeiramente diferentes.

Se você estiver usando o Nginx, poderá configurar as seguintes cifras TLS (com base no perfil intermediário do Mozilla SSL Configuration Generator):

 # intermediate configuration
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES25
6-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDH
E-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;

Como alternativa, se você estiver usando o Apache HTTP Server, configure as seguintes cifras TLS (com base no perfil intermediário do Mozilla SSL Configuration Generator):

# intermediate configuration
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
SSLHonorCipherOrder off
SSLSessionTickets off

Você também pode testar a pontuação de configuração TLS do seu site usando uma ferramenta gratuita chamada SSLabs para obter informações ainda mais técnicas.

Meu WordPress é executado em HTTPS, é seguro?

Ícones de cadeado verdes e as palavras “seguro” ao lado da barra de endereços do seu navegador podem ter levado você a acreditar que o HTTPS é uma varinha mágica que resolve todos os problemas de segurança do site. Infelizmente, não. O cadeado verde na barra do navegador

O HTTPS é apenas uma pequena parte da segurança do WordPress: ele permite que os visitantes naveguem em seu site por meio de uma conexão segura . No entanto, ele não protege seu site como um firewall do WordPress, nem o torna mais seguro. Isso não significa que seja mais seguro do que um site rodando em HTTP. Como qualquer outra defesa de segurança, o HTTPS ajuda a resolver parte do problema.

Em outras palavras, embora você certamente deva implementar e aplicar o HTTPS, isso não significa que você pode ficar tranquilo e nunca mais se preocupar com segurança. Você ainda deve:

  • Adicionar autenticação de dois fatores
  • Instale um plug-in de monitoramento de integridade de arquivos
  • Aplique políticas de senha fortes do WordPress
  • Mantenha um log de atividades do WordPress como um registro de todas as alterações que acontecem em seu site
  • Use um bom firewall.