Saltar para o conteúdo
StealthRDP
Gestão de VPS

Como apontar um domínio para o seu VPS e ter HTTPS grátis

Aponte um domínio para o seu VPS: crie registos A, verifique-os com dig ou nslookup, abra as portas 80 e 443 e ative HTTPS grátis com Let's Encrypt e Certbot.

Publicado a

9 min de leitura

Este guia mostra como apontar um domínio para o seu VPS, de modo que example.com e www.example.com abram o seu site, e como ativar o HTTPS com um certificado gratuito do Let's Encrypt. [1] Destina-se a quem tem um domínio e um VPS com Ubuntu 24.04 LTS e nginx ou Apache, com o DNS gerido no registador ou na Cloudflare. Substitua example.com e 203.0.113.10 pelo seu domínio e pelo endereço do seu servidor.

Do que precisa antes de começar

Precisa de quatro coisas:

  • Acesso ao DNS do domínio, no registador ou na Cloudflare, se o domínio usar os servidores de nomes da Cloudflare.
  • Acesso SSH com permissões sudo, através de uma chave SSH em vez de uma palavra-passe de root, como na nossa lista de verificação para reforçar a segurança do SSH.
  • nginx ou Apache, instalado e em execução.
  • O endereço IPv4 público do servidor, que o seu fornecedor indica nos dados do servidor. Todos os VPS Linux da StealthRDP têm um endereço IPv4 dedicado.

O IPv6 é opcional: um registo AAAA associa um nome a um endereço IPv6, por isso só deve criar registos AAAA se o servidor tiver um. [2] Ainda está a escolher o servidor? O nosso guia sobre como dimensionar um VPS para alojamento web pode ajudar.

Como apontar um domínio para o VPS com registos DNS

Para apontar um domínio para o seu VPS, crie registos A que associem example.com e www.example.com ao endereço IPv4 do servidor. [2] Faça a alteração no serviço onde o DNS do domínio estiver alojado.

Se o domínio já tiver um site ou um serviço de e-mail em funcionamento, tome nota primeiro dos registos existentes. Altere apenas os registos A, AAAA e CNAME de @ e www e não mexa nos restantes, como os registos MX do e-mail.

1. Crie registos A para o domínio raiz e para o www

Um registo A associa um nome a um endereço IPv4 e, no campo do nome, @ representa a raiz da zona (o apex), ou seja, o próprio example.com. [2]

Tipo Nome Conteúdo Estado do proxy (só na Cloudflare)
A @ 203.0.113.10 DNS only, por agora
A www 203.0.113.10 DNS only, por agora
AAAA @ e www O endereço IPv6 do servidor, só se tiver um DNS only, por agora

Apague quaisquer outros registos A ou AAAA destes nomes, como os que apontam para uma página de domínio estacionado do registador.

2. Ou aponte o www com um registo CNAME

Um registo CNAME associa um nome a outro nome, em vez de a um endereço. [2] Um CNAME em www que aponte para example.com segue o registo da raiz, por isso, se o servidor mudar de endereço, só tem de editar um registo. Para www, use o registo A ou o CNAME, e não os dois.

Na Cloudflare, mantenha os dois registos em DNS only (nuvem cinzenta) até o certificado ser emitido; a secção sobre a Cloudflare explica porquê.

3. Saiba como funciona o TTL antes de esperar pelas alterações de DNS

O TTL (time to live) define durante quanto tempo os resolvers DNS guardam uma resposta em cache antes de voltarem a perguntar, por isso uma resposta antiga pode manter-se até o TTL expirar. [2] Na Cloudflare, os registos com proxy usam por predefinição o valor Auto, que corresponde a 300 segundos, e os registos DNS only usam o valor que escolher. [2] Os outros fornecedores mostram o valor predefinido na coluna TTL.

4. Verifique os registos com dig ou nslookup

Consulte os dois nomes num resolver público, como o Google Public DNS em 8.8.8.8: use dig no Linux e no macOS, e nslookup no Windows. [3]

Linux ou macOS
dig -t A example.com @8.8.8.8
dig -t A www.example.com @8.8.8.8
Windows (PowerShell ou Linha de Comandos)
nslookup -type=A example.com 8.8.8.8
nslookup -type=A www.example.com 8.8.8.8

Os dois nomes devem devolver 203.0.113.10; para verificar o IPv6, peça AAAA em vez de A. Se não for o caso, veja os problemas comuns mais abaixo.

Abra as portas 80 e 443 com o UFW

O HTTP usa normalmente a porta TCP 80 e o HTTPS a porta 443, e o Certbot precisa que a porta 80 esteja acessível a partir do resto da internet. [4] O UFW vem desativado, com uma política predefinida que recusa as ligações de entrada; ativá-lo pode cortar ligações existentes, como a sua sessão SSH, e, se o fizer por SSH, o UFW pede-lhe confirmação. [5]

Permita o SSH antes de executar sudo ufw enable; caso contrário, pode ficar sem acesso ao servidor. Se o SSH estiver à escuta numa porta diferente da 22, permita essa porta em vez da 22.

Permita SSH, HTTP e HTTPS e depois ative o UFW
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status

Para permitir um perfil de aplicação em vez de números de porta, sudo ufw app list mostra os perfis disponíveis no servidor e sudo ufw app info mostra as portas que cada um abre; ponha entre aspas os nomes que tenham espaços. [5] Com o IPv6 ativado no UFW, que é a predefinição, cada regra abrange o IPv4 e o IPv6. [5] Se o seu fornecedor tiver uma firewall à frente do servidor, abra também as mesmas portas nessa firewall. [4]

Configure o nginx ou o Apache para servir example.com

Configure example.com no seu servidor web antes de ativar o HTTPS, porque o Certbot espera encontrar um site que já responda por HTTP simples. [4]

nginx: um bloco server para os dois nomes

No Ubuntu, o nginx guarda cada bloco server em /etc/nginx/sites-available e ativa-o com uma ligação simbólica em /etc/nginx/sites-enabled; indique os dois nomes na linha server_name. [6]

/etc/nginx/sites-available/example.com
server {
    listen 80;
    listen [::]:80;
    server_name example.com www.example.com;

    root /srv/example.com/html;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}
Crie uma página de teste, ative o site e recarregue o nginx
sudo mkdir -p /srv/example.com/html
echo "example.com works" | sudo tee /srv/example.com/html/index.html
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

Apache: o equivalente com um virtual host

No Apache, um virtual host em /etc/apache2/sites-available usa ServerName para example.com e ServerAlias para www.example.com; parta de uma cópia do ficheiro predefinido e ative-o com a2ensite. [7]

Copie o virtual host predefinido
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/example.com.conf
/etc/apache2/sites-available/example.com.conf
<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example.com
</VirtualHost>

Reiniciar o Apache afeta todos os sites do servidor. Se houver outros em produção, verifique primeiro o novo ficheiro e mantenha a sessão SSH aberta.

Crie uma página de teste, ative o site e reinicie o Apache
sudo mkdir -p /var/www/example.com
echo "example.com works" | sudo tee /var/www/example.com/index.html
sudo a2ensite example.com
sudo systemctl restart apache2.service

Abra http://example.com e http://www.example.com: os dois devem mostrar a página de teste.

Obtenha HTTPS grátis com o Let's Encrypt e o Certbot

O Certbot obtém um certificado do Let's Encrypt e pode configurar o nginx ou o Apache para o usar. [4]

1. Instale o Certbot como snap

O site do Certbot recomenda vivamente o snap à maioria dos utilizadores. Este método requer o snapd; primeiro, remova qualquer pacote do Certbot instalado com o apt, para que o comando certbot execute a versão snap. [4]

Instale o Certbot no Ubuntu 24.04
sudo apt-get remove certbot
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/local/bin/certbot

2. Obtenha o certificado e ative o HTTPS

O plugin do seu servidor web obtém o certificado e altera a configuração para o usar, o que ativa o HTTPS num só passo. [4]

nginx
sudo certbot --nginx
Apache
sudo certbot --apache

Responda às perguntas do Certbot e inclua os dois nomes, já que um certificado pode abranger vários. [1] Se preferir editar a configuração à mão, execute sudo certbot certonly --nginx, que se limita a obter o certificado. [4] Depois, abra https://example.com e procure o ícone do cadeado. [4]

3. Teste a renovação automática

O Certbot instala uma tarefa cron ou um timer do systemd que renova os certificados antes de expirarem, por isso não precisa de o voltar a executar, a não ser que a configuração mude. [4] Teste já a renovação, e volte a testá-la depois de mexer no DNS, na firewall ou na Cloudflare:

Teste a renovação e localize o timer
sudo certbot renew --dry-run
systemctl list-timers

Quanto tempo duram os certificados do Let's Encrypt

Por predefinição, os certificados do Let's Encrypt são válidos durante 90 dias. [1] A partir de 10 de fevereiro de 2027, os certificados que o Let's Encrypt emitir ou renovar passam a ser válidos durante 64 dias por predefinição, prevendo-se que os últimos certificados de 90 dias expirem a 11 de maio de 2027; para 2028, o Let's Encrypt planeia uma validade predefinida de 45 dias. [8] Se criou a sua própria tarefa cron com um intervalo fixo, o Let's Encrypt aconselha que passe a renovar quando tiverem decorrido cerca de dois terços da validade e que procure nos scripts valores fixos no código, como 60, 80 ou 83. [8]

Use Full (strict) quando o proxy da Cloudflare estiver ativo

Com o proxy da Cloudflare ativo, defina o modo de encriptação SSL/TLS como Full (strict). O modo controla a ligação dos visitantes à Cloudflare e a ligação da Cloudflare ao seu servidor. [9]

Modo Da Cloudflare ao seu servidor Verifica o certificado do servidor
Flexible HTTP simples, sem encriptação Não
Full O mesmo protocolo que o visitante usou Não
Full (strict) O mesmo protocolo que o visitante usou Sim
Strict (SSL-Only Origin Pull) Sempre HTTPS Sim

Evite o Flexible: o browser mostra HTTPS, mas o tráfego entre a Cloudflare e o seu servidor não é encriptado, e a própria Cloudflare recomenda vivamente Full ou Full (strict). [9] Além disso, entra em conflito com o redirecionamento de HTTP para HTTPS que uma configuração feita com o Certbot pode acrescentar. [4] A Cloudflare faz o pedido ao servidor por HTTP simples, o servidor redireciona para HTTPS e o browser entra num ciclo de redirecionamentos. [9] O Full (strict) verifica o certificado do servidor, que pode ser emitido por uma autoridade de certificação (CA) pública como o Let's Encrypt. [9]

Se o certificado expirar, a Cloudflare não passa a zona de Full (strict) para Full, por isso a renovação tem de continuar a funcionar. [9] A ordem mais simples é: primeiro o certificado, depois o proxy.

Escolha Full (strict) só depois de o certificado estar instalado e de o teste de renovação (dry run) ser bem-sucedido.

  1. Obtenha o certificado com os dois registos em DNS only.
  2. Mude os dois registos para Proxied.
  3. Na página Overview da secção SSL/TLS, escolha Full (strict); se a zona usar Automatic SSL/TLS, selecione primeiro Custom. [9]
  4. Volte a executar sudo certbot renew --dry-run.

Com o proxy já ativo, a emissão pode funcionar mesmo assim: em Full e Full (strict), a Cloudflare chega ao seu servidor por HTTP quando o pedido é HTTP, por isso a verificação do Certbot na porta 80 pode passar. [9] O Strict (SSL-Only Origin Pull) liga-se sempre por HTTPS, por isso falha enquanto o certificado não existir. [9] Se a emissão falhar, volte a pôr os registos em DNS only, obtenha o certificado e depois reative o proxy.

Com o proxy ativo, o IP do servidor continua a responder a quem o conheça. Para colmatar essa falha, permita apenas os endereços IP da Cloudflare nas portas 80 e 443.

Problemas comuns e como resolvê-los

A maior parte das falhas resume-se ao DNS, à firewall ou a demasiadas tentativas.

O DNS ainda não foi atualizado. Um endereço antigo significa que um resolver ainda está a servir uma resposta guardada em cache, que pode manter até o TTL expirar. [2] Depois de uma mudança de servidores DNS ou de registador, o Google Public DNS também pode devolver respostas antigas, e a ferramenta Flush Cache limpa-as. [3]

Um registo errado ou em falta. Procure uma gralha no endereço, um registo do registador que tenha ficado para trás, a falta do registo www ou alterações feitas num serviço de DNS que o domínio já não usa. A falta do registo www também bloqueia o HTTPS, porque todos os nomes do pedido têm de passar na validação. [10] Remova os registos AAAA, a não ser que o servidor responda mesmo nesse endereço IPv6.

A porta 80 está bloqueada. Segundo o Let's Encrypt, as falhas na validação HTTP-01 devem-se normalmente a definições de rede ou de firewall que impedem os servidores do Let's Encrypt de chegar ao seu. [10] Verifique a saída de sudo ufw status e a firewall do seu fornecedor, e mantenha a porta 80 aberta depois de passar para HTTPS, porque os plugins do Certbot para nginx e Apache dependem dela. [4]

Demasiadas tentativas falhadas. Uma conta pode falhar a validação do mesmo nome 5 vezes por hora; a quota recupera uma tentativa de 12 em 12 minutos e, enquanto estiver esgotada, o Let's Encrypt recusa novos pedidos para esse nome. [10] Também emite no máximo 5 certificados para exatamente o mesmo conjunto de nomes em cada período de 7 dias, e reinstalar o cliente durante a resolução de problemas é uma forma comum de atingir esse limite. [10] O Let's Encrypt não pode repor um limite antes do tempo, e revogar certificados também não o repõe, por isso corrija a causa antes de tentar novamente; para testes, recomenda o seu ambiente de staging, que tem limites muito mais altos. [10]

Se o domínio e o certificado funcionarem, mas a página mostrar 502 Bad Gateway, siga o nosso guia para resolver o erro 502 Bad Gateway.

Perguntas frequentes

Quanto tempo demora um domínio a apontar para um novo VPS?

Depende do TTL dos registos e do que os resolvers já têm em cache. Na Cloudflare, os registos com proxy usam por predefinição um TTL de 300 segundos e os registos DNS only usam o valor que definir; um resolver pode manter uma resposta antiga até o TTL expirar. [2]

O www deve ser um registo A ou um CNAME?

Ambos funcionam. Um registo A aponta o www diretamente para o endereço IPv4 do servidor, enquanto um CNAME o aponta para outro nome, como example.com, e por isso acompanha esse registo se o endereço mudar. [2]

O Let's Encrypt é gratuito?

Sim. O Let's Encrypt não cobra pelos seus certificados e, por predefinição, os certificados que emite são válidos durante 90 dias. [1]

Durante quanto tempo são válidos os certificados do Let's Encrypt?

Atualmente, os certificados do Let's Encrypt são válidos durante 90 dias por predefinição. [1] A partir de 10 de fevereiro de 2027, os certificados novos e renovados passam a ser válidos durante 64 dias por predefinição, e o Let's Encrypt planeia uma validade predefinida de 45 dias em 2028. [8]

Que modo SSL/TLS da Cloudflare devo usar com o Let's Encrypt?

Use Full (strict). Este modo valida o certificado do seu servidor, que pode ser do Let's Encrypt, ao passo que o Flexible deixa sem encriptação a ligação entre a Cloudflare e o seu servidor. [9]

Fontes e referências
  1. FAQ — Let's Encrypt (consultado a 2026-11-03)
  2. DNS record types — Cloudflare Docs (consultado a 2026-11-03)
  3. Troubleshooting — Google Public DNS (consultado a 2026-11-03)
  4. Certbot instructions: Nginx on Linux (snap) — Certbot (EFF) (consultado a 2026-11-03)
  5. ufw(8): program for managing a netfilter firewall — Ubuntu Manpages (consultado a 2026-11-03)
  6. How to configure nginx — Ubuntu Server documentation (consultado a 2026-11-03)
  7. How to configure Apache2 settings — Ubuntu Server documentation (consultado a 2026-11-03)
  8. 64-Day Certificate Lifetimes Coming Feb 2027 — Let's Encrypt (consultado a 2026-11-03)
  9. Encryption modes — Cloudflare Docs (consultado a 2026-11-03)
  10. Rate Limits — Let's Encrypt (consultado a 2026-11-03)

Continue a ler