Base de Conhecimento

Como instalar certificado SSL: passo a passo

  • certificado ssl, certbot, nginx, apache, https, let's encrypt
  • Usuários acharam útil: 0

Passo a passo para instalar certificado SSL em um servidor Debian ou Ubuntu com Nginx ou Apache, com Certbot ou certificado comprado, e redirecionar para HTTPS.

Por Redação Eleven Host · @robson.direitodigital · Atualizado em 18 de outubro de 2026 · 9 min de leitura

Janela de terminal da Eleven Host com o título Como instalar certificado SSL: passo a passo

Arte: Eleven Host. Certbot ou certificado comprado, Nginx ou Apache: instalar, renovar e redirecionar para HTTPS. Arte: Eleven Host

Como instalar certificado SSL em um servidor Debian ou Ubuntu com Nginx ou Apache? Um caminho direto é o Certbot: ele pede o certificado, ajusta a configuração e agenda a renovação. Quem comprou um certificado usa chave, CSR e cadeia intermediária.

O que precisa estar pronto antes

Este guia é para quem administra o próprio servidor, como uma VPS com Debian ou Ubuntu, com terminal e sudo. O que é o certificado e como ele funciona está no artigo O que é certificado SSL e como ele funciona, e a diferença entre SSL e TLS está em Certificado SSL ou TLS: qual a diferença? Guia.

Antes de qualquer comando, confira três coisas:

  1. O domínio aponta para o IP do servidor. Os registros A (e AAAA, se você usa IPv6) do domínio e do www precisam levar ao servidor certo.
  2. O servidor web está instalado, ativo e respondendo pelo nome do domínio.
  3. A porta 80 está liberada no firewall. A validação por HTTP acontece nela. Libere também a 443, que o HTTPS vai usar.

Para conferir o DNS, rode no próprio servidor:

dig +short exemplo.com

dig +short www.exemplo.com

O resultado deve ser o IP do seu servidor (se o dig não existir, instale o pacote dnsutils). Se vier vazio ou outro IP, corrija o DNS e espere propagar.

Se você usa o ufw como firewall, libere as portas assim (se ele ainda não estiver ativo, não o ligue sem antes liberar a porta do seu acesso SSH):

sudo ufw allow 80/tcp

sudo ufw allow 443/tcp

sudo ufw status

Certificado só sai quando o domínio aponta para o servidor e a porta 80 responde: se um dos dois falhar, o resto do tutorial não adianta.

Caminho 1: certificado gratuito com Certbot

O Let's Encrypt emite certificados gratuitos, e o Certbot é o programa que conversa com ele. Instale pelo gerenciador de pacotes da distribuição, junto com o plugin do seu servidor web.

Instalar o Certbot

Para Nginx:

sudo apt update

sudo apt install certbot python3-certbot-nginx

Para Apache:

sudo apt update

sudo apt install certbot python3-certbot-apache

A versão instalada depende da versão da sua distribuição.

Pedir e instalar o certificado

Antes, confirme que o nome do domínio está na configuração do site: server_name no Nginx ou ServerName no Apache. O Certbot usa esse nome para achar o site certo. Depois, rode o comando do seu servidor web.

Nginx:

sudo certbot --nginx -d exemplo.com -d www.exemplo.com

Apache:

sudo certbot --apache -d exemplo.com -d www.exemplo.com

Na primeira vez, o Certbot pede um e-mail para avisos e a aceitação dos termos de uso. Depois valida o domínio pela porta 80, grava o certificado e ajusta o site. Dependendo da versão, ele também pergunta se deve redirecionar o HTTP para o HTTPS. Se perguntar, aceite, mas confira o resultado no passo de redirecionamento, mais abaixo.

Liste os certificados instalados e as datas de vencimento:

sudo certbot certificates

Testar a renovação

Esse certificado precisa ser renovado de tempos em tempos. Em vez de decorar datas, teste se a renovação automática funciona:

sudo certbot renew --dry-run

O dry-run simula a renovação sem trocar o certificado. Se terminar sem erro, a simulação passou nas mesmas condições da renovação real; continue conferindo as datas com o comando certbot certificates. Depois, veja se o agendamento existe. Em Debian e Ubuntu, o pacote registra um timer do systemd ou uma tarefa do cron:

systemctl list-timers | grep certbot

Se o timer não aparecer, veja /etc/cron.d/certbot. Sem nenhum dos dois, a renovação não acontece sozinha: agende o comando certbot renew por conta própria.

Quer um servidor para instalar e renovar o certificado por conta própria? Ver planos de VPS

Caminho 2: certificado comprado, com chave e CSR

Se a sua empresa já tem um certificado emitido por uma autoridade certificadora, ou precisa de um tipo de validação que o gratuito não oferece, o processo muda: você gera uma chave e um pedido de assinatura (CSR), envia o CSR à autoridade, recebe os arquivos e instala tudo à mão.

Gerar a chave privada e o CSR

Crie a chave e o CSR no próprio servidor. A chave privada nunca sai dele e nunca vai por e-mail ou chamado.

sudo openssl req -new -newkey rsa:2048 -nodes -keyout /etc/ssl/private/exemplo.com.key -out exemplo.com.csr

sudo chmod 600 /etc/ssl/private/exemplo.com.key

O openssl faz algumas perguntas. Uma das perguntas é o Common Name: coloque o nome exato do site, como www.exemplo.com ou exemplo.com. Para ver o conteúdo do CSR antes de enviar:

openssl req -in exemplo.com.csr -noout -text

Enviar o CSR e montar a cadeia

Envie à autoridade só o arquivo exemplo.com.csr. Ela vai pedir prova de que o domínio é seu, conforme o tipo de validação escolhido. Depois da validação, você recebe o certificado do seu domínio e o certificado intermediário.

O navegador só confia no seu certificado se conseguir ligá-lo, passo a passo, a uma autoridade que ele já conhece. Essa ligação é a cadeia, e o servidor precisa entregar o seu certificado seguido do intermediário. Junte os dois em um único arquivo, com o seu certificado primeiro:

cat exemplo.com.crt intermediario.crt | sudo tee /etc/ssl/certs/exemplo.com-cadeia.crt

Os nomes exemplo.com.crt e intermediario.crt são ilustrativos: use os nomes dos arquivos que a autoridade enviou.

Apontar o Nginx

No bloco server do site, em /etc/nginx/sites-available/ no layout padrão do Debian e do Ubuntu, adicione estas linhas:

listen 443 ssl;

server_name exemplo.com www.exemplo.com;

ssl_certificate /etc/ssl/certs/exemplo.com-cadeia.crt;

ssl_certificate_key /etc/ssl/private/exemplo.com.key;

Teste a configuração antes de recarregar. Se o teste apontar erro, não recarregue: o servidor segue com a configuração antiga até você corrigir o arquivo.

sudo nginx -t

sudo systemctl reload nginx

Apontar o Apache

No Apache, ative o módulo SSL e crie ou edite o VirtualHost da porta 443 do site:

sudo a2enmod ssl

Se o site é novo, habilite-o também:

sudo a2ensite nome-do-site

Dentro do VirtualHost, use:

SSLEngine on

SSLCertificateFile /etc/ssl/certs/exemplo.com-cadeia.crt

SSLCertificateKeyFile /etc/ssl/private/exemplo.com.key

Aqui, o arquivo em SSLCertificateFile é o que reúne o seu certificado e o intermediário. Versões mais antigas do Apache pedem o intermediário em uma diretiva separada, a SSLCertificateChainFile; confira a versão com apachectl -v e a documentação dela. Valide e recarregue:

sudo apachectl configtest

sudo systemctl reload apache2

Um ponto que muda o dia a dia: o certificado comprado não se renova sozinho. Anote a data de vencimento no calendário da equipe e repita o ciclo de CSR, validação e instalação antes dela.

Redirecionar HTTP para HTTPS

Com o certificado instalado, quem digitar o endereço sem https ainda cai na versão sem segurança. O redirecionamento permanente resolve. Se o Certbot já configurou, só confira.

No Nginx, o bloco server da porta 80 deve ter só estas linhas. Se o seu site ainda tem listen 80 e listen 443 no mesmo bloco, separe em dois: um para a porta 80, com o redirecionamento, e outro para a 443, com o site. Dois blocos com o mesmo nome e a mesma porta geram conflito:

listen 80;

server_name exemplo.com www.exemplo.com;

return 301 https://$host$request_uri;

No Apache, dentro de um VirtualHost da porta 80:

ServerName exemplo.com

ServerAlias www.exemplo.com

Redirect permanent / https://exemplo.com/

Teste a configuração (nginx -t ou apachectl configtest) e recarregue, como nos passos anteriores. Contexto de segurança: Segurança para sites: 10 medidas essenciais.

Como verificar se deu certo

Abra o site com https e clique no cadeado: o nome deve ser o do seu domínio e o vencimento deve estar no futuro. Depois digite o endereço com http e confirme o redirecionamento.

Para uma conferência pelo terminal, que também mostra a cadeia entregue pelo servidor:

echo | openssl s_client -connect exemplo.com:443 -servername exemplo.com

Procure no resultado a linha Verify return code: 0 (ok). Um código diferente de zero indica problema, como cadeia incompleta.

Entenda

  • Antes: DNS apontado e portas 80 e 443 liberadas.
  • Certbot: instalar, rodar o plugin do seu servidor, testar o dry-run.
  • Comprado: chave, CSR, cadeia junto, testar a configuração e só então recarregar.
  • Depois: redirecionar para HTTPS e conferir.

Erros comuns e como resolver

  • A validação falha com o Certbot. Confira o DNS (IP errado) e a porta 80, no firewall do servidor e em qualquer firewall externo.
  • O navegador reclama de cadeia incompleta. O servidor entregou só o seu certificado, sem o intermediário. Monte o arquivo com os dois, como no caminho 2.
  • Aviso de nome diferente. O certificado foi emitido para exemplo.com, mas o visitante abriu www.exemplo.com. Inclua os dois nomes no pedido.
  • Cadeado com aviso de conteúdo misto. A página carrega imagens, scripts ou estilos por http. Troque os endereços para https, ou para caminhos relativos.
  • O servidor não recarrega. Leia a mensagem do nginx -t ou do apachectl configtest: ela indica o arquivo e a linha com o erro, como um caminho digitado errado ou uma chave que não combina com o certificado.

Para entender o que o cadeado garante e o que ele não garante sobre o resto do site, leia Segurança de sites: guia para quem tem e para quem visita.

Dois exemplos do dia a dia

Blog pessoal em uma VPS com Nginx. O dono aponta o domínio, instala o Certbot com o plugin do Nginx, roda o comando com os dois nomes e termina com o dry-run.

Empresa com exigência de certificado de uma autoridade específica. O responsável de TI gera a chave e o CSR no servidor Apache, envia só o CSR, monta o arquivo com a cadeia e agenda no calendário a renovação, porque ela é manual.

Precisa de um endereço para o certificado? Buscar domínio

Perguntas frequentes

Posso instalar o certificado antes de apontar o domínio?

Não pelo caminho deste guia (validação por HTTP): a validação precisa chegar ao seu servidor pelo nome do domínio. Aponte o DNS primeiro.

O Certbot funciona com Nginx e Apache ao mesmo tempo?

Ele tem um plugin para cada servidor. Use o do servidor que atende o domínio. Se os dois estiverem instalados, confirme qual deles responde nas portas 80 e 443.

Preciso reiniciar o servidor depois de instalar?

Não. Basta testar a configuração e recarregar o serviço, o que não derruba as conexões abertas.

E se o dry-run der erro?

Leia a mensagem: ela aponta a causa, como porta 80 fechada, DNS errado ou site que não responde. Corrija e rode de novo antes de confiar na renovação.

Posso usar o mesmo certificado em dois servidores?

Depende das regras da autoridade que emitiu e do tipo de certificado: confira os termos dela. Com o Certbot, peça um certificado em cada servidor.

Esta resposta lhe foi útil?

Artigos Relacionados