Como instalar SSL em um VPS sem tempo de inatividade
Publicado em 9 de novembro de 2026

Para instalar SSL em um VPS com segurança, primeiro confirme se seu domínio aponta para o VPS, se as portas 80 e 443 estão acessíveis e se o servidor Web já está servindo o site correto. A instalação do SSL costuma ser rápida. Os problemas que causam transtornos quase sempre estão relacionados ao DNS, às regras de firewall ou a uma configuração de host virtual que aponta para um local inesperado.
Um certificado válido criptografa o tráfego entre um visitante e seu aplicativo. Ele também ativa o cadeado no navegador, protege sessões de login e formulários de pagamento e evita a página de aviso que afasta clientes antes mesmo de o site ter a chance de funcionar. Para um site de comércio eletrônico, painel SaaS, site de cliente de uma agência ou portal de e-mail corporativo, isso é o básico para manter a produção em ordem.
Antes de instalar SSL em um VPS, confira estes pontos básicos
Comece verificando o registro DNS. O registro A do seu domínio deve resolver para o endereço IPv4 público do VPS. Se você usa IPv6, o registro AAAA também deve apontar para o mesmo servidor. Um registro AAAA esquecido é um problema clássico: alguns visitantes chegam ao novo servidor, enquanto outros chegam a um antigo e recebem um aviso de incompatibilidade de certificado.
Em seguida, verifique se as portas TCP de entrada 80 e 443 estão abertas nos dois locais importantes: o firewall do VPS e qualquer firewall fornecido pelo provedor. A validação HTTP comum do Certbot precisa que a porta 80 esteja disponível, temporária ou permanentemente. Seu servidor Web precisa responder às solicitações do domínio nessa porta.
Você também deve identificar o servidor Web e o sistema operacional antes de fazer qualquer alteração. Os comandos abaixo pressupõem Ubuntu ou Debian com Nginx ou Apache. Os mesmos conceitos de certificado se aplicam ao AlmaLinux, Rocky Linux e outras distribuições, mas os nomes dos pacotes e os comandos de serviço podem ser diferentes.
Primeiro, faça uma cópia de segurança da configuração do servidor Web. Um snapshot do VPS ou uma cópia de segurança de `/etc/nginx/` ou `/etc/apache2/` oferece um ponto de reversão seguro. Não é nada dramático, apenas uma boa prática operacional. Seu eu do futuro vai agradecer às 2h da manhã.
Escolha o tipo de certificado certo
Para a maioria dos sites, um certificado gratuito do Let's Encrypt é a escolha mais sensata. Ele oferece a mesma criptografia de transporte usada por certificados comerciais e funciona bem para sites comuns, APIs e painéis de controle. O certificado é válido por 90 dias, portanto a renovação automática faz parte da instalação, não é um extra opcional.
Um certificado pago pode ser apropriado quando sua organização precisa de um nível específico de validação, termos de garantia, uma autoridade de certificação específica ou um processo de aquisição gerenciado. As etapas de instalação são um pouco diferentes, pois você gera uma solicitação de assinatura de certificado, recebe os arquivos emitidos e instala manualmente a cadeia de certificados.
Se seu aplicativo estiver atrás do Cloudflare, de um balanceador de carga ou de outro proxy reverso, decida onde o TLS deve ser encerrado. Talvez seja necessário ter um certificado no proxy e outro entre o proxy e o VPS. Não presuma que um ícone de nuvem laranja ou um balanceador de carga elimina a necessidade de criptografia na origem. Isso depende do modo de segurança, mas a criptografia de ponta a ponta costuma ser a configuração correta para produção.
Instale um certificado Let's Encrypt com o Certbot
No Ubuntu ou Debian, atualize as informações dos pacotes e instale o Certbot com o plug-in do seu servidor Web. Para Nginx, use:
```bash sudo apt update sudo apt install certbot python3-certbot-nginx ```
Para Apache, instale o plug-in do Apache:
```bash sudo apt update sudo apt install certbot python3-certbot-apache ```
Antes de executar o Certbot, teste a configuração do servidor Web. Para Nginx:
```bash sudo nginx -t ```
Para Apache:
```bash sudo apachectl configtest ```
Corrija todos os erros relatados antes de continuar. A solicitação do certificado pode ser bem-sucedida enquanto a recarga falha, deixando o certificado no disco, mas inativo para os visitantes. Os logs já estão contando a mesma história, então leia-os antes de adicionar mais uma variável.
Para um site Nginx, solicite o certificado e permita que o Certbot atualize o bloco do servidor:
```bash sudo certbot --nginx -d example.com -d www.example.com ```
Para Apache, execute:
```bash sudo certbot --apache -d example.com -d www.example.com ```
Substitua `example.com` pelo seu domínio real. Inclua `www` somente se ele existir no DNS e estiver configurado no servidor Web. Durante as solicitações, informe um endereço de e-mail válido, aceite os termos e escolha a opção de redirecionamento se quiser que todo o tráfego HTTP seja enviado para HTTPS. Na maioria dos casos, é melhor redirecionar. Isso impede que os visitantes acessem uma versão não criptografada da mesma página.
O Certbot obterá o certificado, adicionará os caminhos à configuração do servidor e recarregará o serviço correspondente. As solicitações HTTP existentes podem ser concluídas normalmente, e uma recarga padrão geralmente não causa tempo de inatividade significativo. Ainda assim, faça isso em um período mais tranquilo se seu aplicativo tiver uma configuração complexa de proxy ou regras de reescrita personalizadas.
Instale manualmente um certificado SSL comercial
Se você comprou um certificado, crie uma chave privada e uma solicitação de assinatura de certificado no VPS. Mantenha a chave privada no servidor e nunca a envie por e-mail nem a inclua em um chamado.
```bash sudo openssl req -new -newkey rsa:2048 -nodes \ -keyout /etc/ssl/private/example.com.key \ -out /etc/ssl/certs/example.com.csr ```
Seu provedor de certificados emitirá um certificado de servidor e um ou mais certificados intermediários. Se o provedor exigir, combine os certificados intermediários para formar a cadeia completa. Com o Nginx, o bloco do servidor geralmente precisa das seguintes diretivas:
```nginx listen 443 ssl; server_name example.com www.example.com; ssl_certificate /etc/ssl/certs/example.com.fullchain.pem; ssl_certificate_key /etc/ssl/private/example.com.key; ```
O Apache usa as diretivas equivalentes `SSLCertificateFile` e `SSLCertificateKeyFile` dentro do host virtual HTTPS. A estrutura exata dos arquivos pode variar de acordo com a distribuição e o painel de controle, portanto não copie caminhos às cegas. Verifique também a propriedade e as permissões. Normalmente, somente o root e, quando necessário, a conta do serviço devem ter permissão de leitura da chave privada.
Teste a configuração e, se possível, recarregue o serviço em vez de reiniciá-lo:
```bash sudo nginx -t && sudo systemctl reload nginx ```
Uma recarga mantém os processos de trabalho ativos enquanto aplica a nova configuração. É a opção mais tranquila quando disponível.
Verifique o certificado e o comportamento do redirecionamento
Abra seu domínio em uma janela de navegação privada usando `https://`. Verifique se o domínio exibido corresponde ao certificado e se o navegador informa que a conexão é válida. Em seguida, teste a versão HTTP e confirme que ela redireciona para HTTPS.
No VPS ou em outro terminal, você pode inspecionar os cabeçalhos da resposta:
```bash curl -I http://example.com curl -I https://example.com ```
A solicitação HTTP deve retornar um redirecionamento 301 ou 308 para o endereço HTTPS. A solicitação HTTPS deve retornar o status esperado, geralmente 200, 301 ou 302, dependendo do aplicativo.
Inspecione também o certificado diretamente:
```bash sudo certbot certificates ```
Para um certificado comercial, use o OpenSSL para verificar a data de expiração e os detalhes do emissor:
```bash openssl x509 -in /etc/ssl/certs/example.com.fullchain.pem -noout -dates -issuer -subject ```
Não se limite a verificar o cadeado. O conteúdo misto ainda pode afetar as páginas se scripts, imagens, fontes ou chamadas de API forem carregados com URLs `http://`. As ferramentas de desenvolvedor do navegador mostrarão esses avisos. Atualize URLs fixas no código, variáveis de ambiente do aplicativo e configurações de CDN ou de recursos.
Monitore a renovação
Os certificados Let's Encrypt precisam ser renovados antes de completarem 90 dias. Os pacotes modernos do Certbot normalmente instalam um temporizador systemd automaticamente, mas verifique se ele está configurado, em vez de confiar em um servidor silencioso.
```bash sudo systemctl list-timers | grep certbot sudo certbot renew --dry-run ```
O teste a seco é o teste que realmente importa. Ele confirma que o VPS conseguirá concluir uma validação futura e recarregar o servidor Web após a renovação. Se falhar, resolva o problema enquanto o certificado atual ainda estiver válido.
Para certificados comerciais, anote a data de expiração com bastante antecedência. A renovação costuma ser manual, a menos que seu provedor de certificados ou plataforma de gerenciamento ofereça suporte à automação. Sempre que possível, adicione o monitoramento de expiração de certificados. Um certificado válido que expira sem que ninguém perceba ainda causa uma interrupção, só que com um erro de navegador de aparência bem oficial.
Na kodu.cloud, o suporte operacional gerenciado e o monitoramento podem reduzir esse tipo de risco recorrente, especialmente quando um VPS hospeda vários domínios de clientes ou serviços de produção. O objetivo é simples: os certificados devem ser renovados sem alarde, e sua equipe não deve precisar se lembrar deles a cada trimestre.
Problemas comuns após a instalação do SSL
Uma incompatibilidade de certificado geralmente significa que a solicitação está chegando ao VPS errado, que o host virtual padrão é o incorreto ou que a solicitação do certificado omitiu um nome de host, como `www`. Verifique primeiro o DNS e, em seguida, confira os nomes de servidor configurados no servidor Web.
Uma falha de validação normalmente aponta para a porta 80, a propagação do DNS ou uma configuração de proxy. Se o domínio usar uma CDN, verifique se os registros DNS e o modo de proxy permitem o método de validação escolhido. A validação por desafio DNS costuma ser melhor para certificados curinga, mas exige acesso à API do DNS ou um processo manual de criação de registros DNS.
Se o site entrar em um loop de redirecionamento após a ativação do HTTPS obrigatório, procure redirecionamentos conflitantes no aplicativo, no Nginx ou Apache e em qualquer proxy reverso. Aplicativos atrás de um proxy talvez precisem de uma configuração confiável de cabeçalhos encaminhados para reconhecer que a solicitação original usava HTTPS. Quando isso acontece, a situação do DNS não é das mais bonitas, mas fica sob controle assim que há um único responsável claro pelos redirecionamentos.
Inclua o certificado, a configuração do servidor Web e as verificações de renovação na mesma rotina operacional. Um certificado SSL instalado corretamente deve se tornar uma infraestrutura sem surpresas: presente, verificado e sem chamar atenção.
Andres Saar, engenheiro de atendimento ao cliente