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.
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]
dig -t A example.com @8.8.8.8
dig -t A www.example.com @8.8.8.8nslookup -type=A example.com 8.8.8.8
nslookup -type=A www.example.com 8.8.8.8Os 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.
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw statusPara 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]
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;
}
}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 nginxApache: 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]
sudo cp /etc/apache2/sites-available/000-default.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.
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.serviceAbra 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]
sudo apt-get remove certbot
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/local/bin/certbot2. 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]
sudo certbot --nginxsudo certbot --apacheResponda à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:
sudo certbot renew --dry-run
systemctl list-timersQuanto 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.
- Obtenha o certificado com os dois registos em DNS only.
- Mude os dois registos para Proxied.
- Na página Overview da secção SSL/TLS, escolha Full (strict); se a zona usar Automatic SSL/TLS, selecione primeiro Custom. [9]
- 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
- FAQ — Let's Encrypt (consultado a 2026-11-03)
- DNS record types — Cloudflare Docs (consultado a 2026-11-03)
- Troubleshooting — Google Public DNS (consultado a 2026-11-03)
- Certbot instructions: Nginx on Linux (snap) — Certbot (EFF) (consultado a 2026-11-03)
- ufw(8): program for managing a netfilter firewall — Ubuntu Manpages (consultado a 2026-11-03)
- How to configure nginx — Ubuntu Server documentation (consultado a 2026-11-03)
- How to configure Apache2 settings — Ubuntu Server documentation (consultado a 2026-11-03)
- 64-Day Certificate Lifetimes Coming Feb 2027 — Let's Encrypt (consultado a 2026-11-03)
- Encryption modes — Cloudflare Docs (consultado a 2026-11-03)
- Rate Limits — Let's Encrypt (consultado a 2026-11-03)
Continue a ler
VPS Windows ou Linux: qual deve escolher para a sua empresa?
VPS Windows ou Linux? Compare licenciamento, consumo de recursos, software, gestão e segurança, e decida rapidamente qual se adapta à sua carga de trabalho.
Segurança SSH: lista de verificação para proteger um VPS Linux
Reforce a segurança SSH num VPS novo com Ubuntu 24.04: chaves SSH, definições do sshd, UFW e Fail2ban, com um teste em cada passo para não perder o acesso.
Permitir apenas IPs da Cloudflare no nginx, Apache e IIS
Como permitir apenas IPs da Cloudflare nas portas 80 e 443 com UFW, nginx, Apache e IIS, manter a lista atualizada e impedir acessos diretos ao IP de origem.
