Módulo 3 · 3.1
https e o certificado
Módulo 3: Endereço, https e utilizadores · Tempo de leitura: 8 minutos
Objetivo de aprendizagem: No final desta lição, consegue colocar um site WordPress totalmente em https e sabe o que fazem o endereço do WordPress e o endereço do site.
Conceitos-chave: TLS, certificado, Let's Encrypt, renovação automática, endereço do WordPress (siteurl), endereço do site (home), WP_HOME e WP_SITEURL, HSTS, ficar sem acesso
O que faz o https
Com https, tudo o que circula entre o navegador e o servidor fica cifrado: palavras-passe, formulários, cookies e até páginas normais. Sem https, qualquer pessoa na mesma rede (um wifi público, um router comprometido) pode ler e até alterar a página. Os navegadores apresentam um site sem https como "não segura" e algumas funcionalidades (como a localização ou a câmara) só funcionam com https.
A cifragem chama-se TLS. Para comprovar que o navegador está realmente a comunicar com example.com e não com um intermediário, o servidor tem um certificado: uma prova digital, assinada por uma entidade emissora em quem os navegadores confiam. O certificado indica os nomes para os quais é válido e até quando.
Certificados gratuitos e renovação
O Let's Encrypt emite certificados gratuitos. Praticamente todos os fornecedores de alojamento os pedem automaticamente e também os renovam automaticamente. Um certificado do Let's Encrypt é atualmente válido por 90 dias, e o Let's Encrypt já anunciou que vai reduzir gradualmente essa validade para 45 dias. Renovar manualmente não é, por isso, uma opção: tem de ser automático.
Um certificado pago não cifra melhor. A diferença está na verificação adicional da organização (e, por vezes, numa garantia). Para a maioria dos sites, um certificado gratuito é perfeitamente adequado.
Aspetos a verificar:
- O certificado tem de cobrir todos os nomes que um visitante possa escrever:
example.comewww.example.com. Também o nome que apenas redireciona, porque o navegador verifica o certificado antes do redirecionamento. - A renovação automática só funciona se o DNS apontar para o seu servidor. Se mudou o DNS ou colocou um proxy (como o Cloudflare) à frente, verifique se a renovação ainda funciona.
- Um registo CAA no DNS pode determinar quais as entidades emissoras autorizadas a criar certificados. Se o Let's Encrypt não constar aí, o pedido falha (curso de DNS, lição 5.2).
Dois endereços no WordPress
Em Opções > Geral existem dois endereços. Parecem uma duplicação desnecessária, mas têm significados diferentes:
| Campo | Na base de dados | Significado |
|---|---|---|
| Endereço do WordPress (URL) | siteurl | Onde se encontram os ficheiros do WordPress (wp-admin, wp-includes) |
| Endereço do site (URL) | home | O endereço que os visitantes utilizam |
Normalmente são iguais, por exemplo ambos https://example.com. Só diferem quando o WordPress está numa subpasta mas o site tem de aparecer na pasta principal.
O WordPress cria todas as ligações com base nestes endereços: para páginas, folhas de estilo, imagens, o painel de administração. Se aqui estiver http://, o WordPress constrói as páginas com ligações http://, mesmo que o visitante entre através de https. Isso gera conteúdo misto (lição 3.2) e redirecionamentos de um lado para o outro.
Colocar um site em https
Se tem um site existente em http, estes são os passos:
- Pedir o certificado para ambos os nomes e confirmar que
https://example.comfunciona (deverá ver uma página do WordPress, talvez ainda sem formatação). - Fazer uma cópia de segurança (lição 8.1).
- Colocar ambos os endereços em Opções > Geral em
https://e guardar. A sessão é terminada; inicie sessão novamente através de https. - Converter as ligações antigas no conteúdo de
http://example.comparahttps://example.com. Faça-o com uma ferramenta que compreenda dados serializados, como owp search-replaceou um plugin de procurar e substituir (lição 3.2), nunca com um comando SQL direto. - Redirecionamento: configure o servidor web para enviar todos os pedidos em http com um 301 para https (lição 3.2). Muitos fornecedores de alojamento têm uma opção para isso; caso contrário, algumas linhas no
.htaccess. - Verificar com o exercício desta lição e o da lição 3.2.
Sem acesso: quando o endereço está errado
Se escrever um erro de digitação nos endereços (htps://, um domínio errado), o WordPress envia-o, depois de guardar, para esse endereço errado. Deixa de conseguir aceder ao painel de administração. Sem pânico, há duas soluções:
Através do wp-config.php. Coloque antes da linha "parar de editar":
define( 'WP_HOME', 'https://example.com' );
define( 'WP_SITEURL', 'https://example.com' );Estas linhas têm prioridade sobre os valores na base de dados. Os campos em Opções > Geral ficam então cinzentos. Inicie sessão, coloque os valores corretos na base de dados e volte a remover as linhas (ou deixe-as propositadamente, assim ninguém pode alterar os endereços por engano através do painel de administração).
Através do phpMyAdmin. Abra a tabela wp_options e ajuste os valores de siteurl e home.
HSTS: fazer o navegador lembrar-se
Com o cabeçalho HSTS (Strict-Transport-Security), o servidor diz ao navegador: "durante algum tempo, só venhas aqui através de https." O navegador passa então a converter sozinho qualquer http:// para https://, sem fazer primeiro um pedido não protegido.
Strict-Transport-Security: max-age=31536000; includeSubDomainsO HSTS é um bom passo adicional, mas com um aviso: um navegador que já tenha visto o HSTS recusa-se, depois disso, a abrir o site sem um certificado válido, mesmo com a opção "continuar mesmo assim". Com includeSubDomains, isto aplica-se a todos os subdomínios. Se tiver um subdomínio sem certificado (por exemplo, um sistema interno antigo), este fica inacessível depois de ativar o HSTS. Por isso, comece com um max-age curto (por exemplo, um dia, 86400), verifique tudo e só depois prolongue.
Na prática: como se apresenta num painel
Como exemplo, utilizamos o DirectAdmin. No cPanel, a funcionalidade chama-se SSL/TLS Status (AutoSSL); no Plesk, SSL/TLS Certificates.
- Abra SSL-certificaten no seu domínio e escolha Gratis en automatisch certificaat van Let's Encrypt.
- Assinale
example.comewww.example.come peça o certificado. - Nas definições do domínio, ative a opção para enviar sempre os visitantes para https (no DirectAdmin: Forceer SSL met https omleiding). Utilize apenas um método de redirecionamento: dois métodos diferentes ao mesmo tempo podem causar um ciclo ("demasiados redirecionamentos").
- No WordPress, vá a Opções > Geral e coloque ambos os endereços em
https://.
Resumo
- O https cifra tudo entre o navegador e o servidor; o certificado comprova a identidade do servidor.
- Os certificados gratuitos do Let's Encrypt têm validade curta e são renovados automaticamente; têm de cobrir todos os nomes que um visitante escreva.
- O endereço do WordPress (siteurl) e o endereço do site (home) devem estar ambos em
https://. - Se ficar sem acesso devido a um endereço errado, resolva com WP_HOME e WP_SITEURL no wp-config.php ou no phpMyAdmin.
- O HSTS é um bom passo adicional; comece com uma validade curta.
Questionário
Exercício
Exercício A3.1: O seu certificado está correto? Introduza o endereço do seu site. O programa estabelece uma ligação TLS com o domínio sem www e com www (se existir) e verifica: o certificado é válido e de confiança, cobre ambos os nomes, é válido por mais de 14 dias, e o site envia um cabeçalho HSTS? Se o HSTS estiver em falta, isso aparece a laranja com explicação, não como erro.
Leitura adicional
Estes artigos descrevem os passos nos painéis da WebOké; noutros painéis o funcionamento é semelhante.
- Manual DirectAdmin 6.1: O que é SSL e como é que a WebOké o trata?
- Manual DirectAdmin 6.2: Pedir um certificado Let's Encrypt gratuito
- Manual DirectAdmin 6.3: Certificado para www, sub-domínios e wildcard
- Manual DirectAdmin 6.4: Enviar sempre os visitantes para https
- Ativar, renovar e resolver problemas do certificado SSL
- A diferença entre um certificado gratuito e um pago
- Curso gratuito de DNS 5.2: CAA: quem pode emitir certificados?
