15%

Poupe 15% em todos os serviços

Teste as suas habilidades e obtenha Desconto em qualquer plano

Utilizar o código:

Skills
Começar a trabalhar
10.10.2024

Como Instalar um Certificado SSL em um Domínio

Um certificado SSL (Secure Sockets Layer / TLS) é uma credencial criptográfica emitida por uma Autoridade de Certificação (CA) confiável que autentica a identidade do seu servidor e estabelece um canal encriptado entre o servidor e o navegador do cliente. Quando instalado corretamente, atualiza o seu site de http:// para https://, ativa o cadeado do navegador e impede a interceção man-in-the-middle dos dados transmitidos.

Para SEO, o Google trata o HTTPS como um sinal de classificação confirmado desde 2014. Para os utilizadores, um certificado em falta ou mal configurado aciona avisos de segurança no navegador que prejudicam as taxas de conversão. Quer gira uma única página de destino ou uma infraestrutura multi-domínio, configurar corretamente o SSL — e mantê-lo correto — é inegociável.

Pré-requisitos Antes de Começar

Antes de tocar num único ficheiro de configuração, confirme que tem o seguinte em vigor:

  • Um nome de domínio registado apontado para o endereço IP do seu servidor com o DNS totalmente propagado. Pode registar ou transferir um domínio através de Registo de Domínios.
  • Um pacote de certificado SSL de uma CA. Isto inclui tipicamente:
certificate.crt — o seu certificado assinado principal
private.key — a chave privada gerada juntamente com o seu CSR
ca_bundle.crt — a cadeia CA intermédia (por vezes chamada ficheiro de cadeia)
Acesso ao servidor ou painel de controlo — credenciais cPanel/Plesk ou acesso SSH root/sudo ao servidor.
Software de servidor web — Apache ou Nginx, em execução e configurado para o seu domínio.
Porta 443 aberta — verifique se a sua firewall permite TCP de entrada na porta 443 antes de instalar qualquer coisa.

Se estiver a executar um ambiente de VPS Hosting, terá acesso root completo e pode utilizar qualquer um dos três métodos abaixo. Os utilizadores de alojamento partilhado estão tipicamente limitados ao método cPanel.
Escolher o Tipo de Certificado SSL Correto
Nem todos os certificados são equivalentes. Selecionar o tipo errado desperdiça dinheiro ou deixa lacunas na cobertura.



Tipo de Certificado
Nível de Validação
Tempo de Emissão
Cadeado do Navegador
Melhor Para








—
—
—
—
—








DV (Domain Validated)
Apenas controlo de domínio
Minutos
Sim
Blogs, ambientes de desenvolvimento, sites pequenos








OV (Organization Validated)
Domínio + identidade da organização
1–3 dias
Sim
Sites empresariais, plataformas SaaS








EV (Extended Validation)
Verificação completa de entidade legal
3–7 dias
Sim (nome da org em alguns navegadores)
E-commerce, banca, portais de alta confiança








Wildcard (`*.domain.com`)
DV ou OV
Minutos–dias
Sim
Implementações com múltiplos subdomínios








Multi-Domain (SAN)
DV, OV ou EV
Varia
Sim
Múltiplos domínios distintos num único certificado








Let’s Encrypt (DV gratuito)
Apenas controlo de domínio
Segundos
Sim
Qualquer domínio publicamente acessível





Para e-commerce em produção ou qualquer site que processe dados de cartões de pagamento, são fortemente recomendados certificados OV ou EV de uma CA comercial. Os certificados DV do Let’s Encrypt são totalmente confiáveis e excelentes para a maioria dos casos de uso, mas não incluem verificação de identidade organizacional.
Pode adquirir certificados comerciais diretamente através de Certificados SSL se precisar de cobertura OV, EV ou Wildcard com suporte dedicado.
Método 1: Instalar um Certificado SSL via cPanel
A interface gráfica do cPanel é o caminho mais rápido para utilizadores em planos de alojamento gerido ou Alojamento Web Partilhado. Se preferir um ambiente VPS gerido por cPanel, um VPS com cPanel oferece-lhe a mesma interface com controlo total do servidor.
Passo 1: Iniciar Sessão no cPanel
Navegue para o URL de início de sessão do cPanel:
https://yourdomain.com:2083
Autentique-se com as suas credenciais de alojamento.
Passo 2: Navegar para o Gestor SSL/TLS
Na secção Segurança do painel de controlo do cPanel, clique em SSL/TLS. Em seguida, selecione Gerir Sites SSL sob o cabeçalho “Instalar e Gerir SSL para o seu site (HTTPS)”.
Passo 3: Selecionar o Domínio de Destino
Utilize o menu suspenso Domínio para selecionar o domínio que pretende proteger. Se o domínio não aparecer, confirme que está adicionado como domínio addon ou principal no cPanel.
Passo 4: Colar os Componentes do Certificado
Abra cada ficheiro de certificado num editor de texto simples (não Word) e cole o conteúdo nos campos correspondentes:

Certificado (CRT): Conteúdo de certificate.crt
  • Chave Privada (KEY): Conteúdo de private.key. Se gerou o CSR dentro do cPanel, este campo é preenchido automaticamente a partir do armazenamento de chaves do cPanel.
  • Pacote de Autoridade de Certificação (CABUNDLE): Conteúdo de ca_bundle.crt. Omitir este campo é uma das causas mais comuns de erros de “certificado não confiável” em dispositivos móveis e navegadores mais antigos, porque o navegador não consegue construir a cadeia até uma raiz confiável.
  • Passo 5: Instalar e Verificar

    Clique em Instalar Certificado. O cPanel valida o par chave-certificado antes de confirmar. Se houver uma incompatibilidade entre a chave privada e a chave pública do certificado, o cPanel rejeitará a instalação com um erro explícito — não o ignore.

    Após a instalação, visite https://yourdomain.com e confirme que o cadeado aparece. Teste também https://www.yourdomain.com se o subdomínio www estiver em uso.

    Armadilha comum do cPanel: O AutoSSL (integração Let’s Encrypt incorporada no cPanel) pode substituir um certificado instalado manualmente no seu próximo ciclo de renovação. Se instalou um certificado comercial, desative o AutoSSL para esse domínio em cPanel > Estado SSL/TLS para evitar substituição não intencional.

    Método 2: Instalação Automatizada com Let’s Encrypt e Certbot

    O Certbot é o cliente ACME de referência para o Let’s Encrypt. Trata da geração de CSR, validação de domínio, obtenção de certificado, configuração do servidor web e renovação — tudo automaticamente. Esta é a abordagem correta para qualquer servidor Linux que gira diretamente.

    Passo 1: Ligar ao Seu Servidor via SSH

    ssh username@your-server-ip

    Passo 2: Instalar o Certbot

    Debian / Ubuntu (Apache):

    sudo apt update && sudo apt install -y certbot python3-certbot-apache

    Debian / Ubuntu (Nginx):

    sudo apt update && sudo apt install -y certbot python3-certbot-nginx

    RHEL / AlmaLinux / Rocky Linux (Apache):

    sudo dnf install -y epel-release
    sudo dnf install -y certbot python3-certbot-apache

    RHEL / AlmaLinux / Rocky Linux (Nginx):

    sudo dnf install -y epel-release
    sudo dnf install -y certbot python3-certbot-nginx

    Passo 3: Obter e Instalar o Certificado

    Para Apache:

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

    Para Nginx:

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

    O Certbot realiza um desafio HTTP-01 por padrão: coloca um ficheiro temporário na raiz do seu servidor web e pede aos servidores do Let’s Encrypt que o obtenham pela porta 80. Isto significa que a porta 80 deve estar aberta e o seu DNS deve resolver corretamente antes de executar o comando.

    Quando solicitado, selecione a opção para redirecionar todo o tráfego HTTP para HTTPS. Isto escreve um redirecionamento permanente 301 na configuração do seu servidor, que é o comportamento correto para SEO e segurança.

    Passo 4: Verificar a Renovação Automática

    Os certificados Let’s Encrypt expiram após 90 dias. O Certbot instala um temporizador systemd (ou tarefa cron em sistemas mais antigos) que tenta a renovação duas vezes por dia quando o certificado está dentro de 30 dias de expiração. Teste a lógica de renovação sem realmente renovar:

    sudo certbot renew --dry-run

    Uma execução de teste bem-sucedida confirma que o pipeline de renovação está intacto. Verifique o estado do temporizador com:

    systemctl status certbot.timer

    Caso especial — desafio DNS-01 para certificados wildcard: O desafio HTTP-01 não pode validar domínios wildcard (*.yourdomain.com). Para wildcards, utilize o desafio DNS-01, que requer a criação de um registo TXT _acme-challenge na sua zona DNS:

    sudo certbot certonly --manual --preferred-challenges dns -d "*.yourdomain.com" -d yourdomain.com

    Siga as instruções para adicionar o registo TXT, aguarde a propagação do DNS e, em seguida, prima Enter para concluir a validação.

    Método 3: Instalação Manual de SSL via SSH (Apache e Nginx)

    A instalação manual dá-lhe controlo preciso sobre a colocação de certificados, conjuntos de cifras e configuração de host virtual. Esta é a abordagem preferida para servidores de produção onde precisa de aplicar políticas TLS específicas.

    Passo 1: Carregar Ficheiros de Certificado para o Servidor

    Utilize scp para transferir ficheiros da sua máquina local:

    scp certificate.crt private.key ca_bundle.crt username@your-server-ip:/tmp/

    Em seguida, mova-os para um diretório seguro e não acessível pela web:

    sudo mkdir -p /etc/ssl/yourdomain
    sudo mv /tmp/certificate.crt /etc/ssl/yourdomain/
    sudo mv /tmp/private.key /etc/ssl/yourdomain/
    sudo mv /tmp/ca_bundle.crt /etc/ssl/yourdomain/
    sudo chmod 600 /etc/ssl/yourdomain/private.key
    sudo chmod 644 /etc/ssl/yourdomain/certificate.crt /etc/ssl/yourdomain/ca_bundle.crt

    Nota crítica de segurança: A chave privada nunca deve ser legível por todos. A permissão chmod 600 restringe-a apenas ao utilizador root. Em sistemas onde o Apache ou Nginx é executado como utilizador não-root (por exemplo, www-data), o serviço ainda lê a chave no arranque enquanto é executado como root antes de abandonar os privilégios — portanto 600 pertencente ao root está correto.

    Passo 2a: Configurar o Apache

    Edite a configuração do host virtual para o seu domínio:

    sudo nano /etc/apache2/sites-available/yourdomain.com.conf

    Adicione ou modifique o bloco de host virtual SSL:

    <VirtualHost *:80>
        ServerName yourdomain.com
        ServerAlias www.yourdomain.com
        Redirect permanent / https://yourdomain.com/
    </VirtualHost>
    
    <VirtualHost *:443>
        ServerName yourdomain.com
        ServerAlias www.yourdomain.com
    
        SSLEngine on
        SSLCertificateFile      /etc/ssl/yourdomain/certificate.crt
        SSLCertificateKeyFile   /etc/ssl/yourdomain/private.key
        SSLCertificateChainFile /etc/ssl/yourdomain/ca_bundle.crt
    
        # Modern TLS hardening
        SSLProtocol             all -SSLv3 -TLSv1 -TLSv1.1
        SSLCipherSuite          ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384
        SSLHonorCipherOrder     off
        SSLSessionTickets       off
    
        Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
    
        DocumentRoot /var/www/yourdomain
    </VirtualHost>

    Ative o módulo SSL e o site, depois reinicie o Apache:

    sudo a2enmod ssl headers
    sudo a2ensite yourdomain.com.conf
    sudo apache2ctl configtest
    sudo systemctl restart apache2

    Execute sempre apache2ctl configtest antes de reiniciar. Um erro de sintaxe no ficheiro de configuração irá desativar todo o servidor web.

    Passo 2b: Configurar o Nginx

    Edite o bloco de servidor do seu domínio:

    sudo nano /etc/nginx/sites-available/yourdomain.com

    Adicione a seguinte configuração:

    server {
        listen 80;
        server_name yourdomain.com www.yourdomain.com;
        return 301 https://yourdomain.com$request_uri;
    }
    
    server {
        listen 443 ssl http2;
        server_name yourdomain.com www.yourdomain.com;
    
        ssl_certificate      /etc/ssl/yourdomain/certificate.crt;
        ssl_certificate_key  /etc/ssl/yourdomain/private.key;
        ssl_trusted_certificate /etc/ssl/yourdomain/ca_bundle.crt;
    
        # Modern TLS hardening
        ssl_protocols        TLSv1.2 TLSv1.3;
        ssl_ciphers          ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384;
        ssl_prefer_server_ciphers off;
        ssl_session_cache    shared:SSL:10m;
        ssl_session_timeout  1d;
        ssl_session_tickets  off;
    
        # OCSP Stapling
        ssl_stapling         on;
        ssl_stapling_verify  on;
        resolver             8.8.8.8 8.8.4.4 valid=300s;
    
        add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;
    
        root /var/www/yourdomain;
        index index.html index.php;
    }

    Ative o site e teste:

    sudo ln -s /etc/nginx/sites-available/yourdomain.com /etc/nginx/sites-enabled/
    sudo nginx -t
    sudo systemctl restart nginx

    OCSP Stapling explicado: Sem stapling, o navegador deve contactar o respondedor OCSP da CA durante cada handshake TLS para verificar se o certificado foi revogado. Isto adiciona latência e expõe dados de navegação à CA. Com ssl_stapling on, o Nginx armazena em cache a resposta OCSP e serve-a diretamente ao cliente, eliminando a viagem de ida e volta.

    Fortalecimento TLS: O Que a Configuração Original Omite

    Um certificado instalado com configurações padrão é seguro, mas não fortalecido. A tabela seguinte resume as diretivas adicionais que separam uma classificação aprovada no SSL Labs de um A+:

    Diretiva de FortalecimentoDiretiva ApacheDiretiva NginxFinalidade
    Desativar TLS 1.0 / 1.1`SSLProtocol all -TLSv1 -TLSv1.1``ssl_protocols TLSv1.2 TLSv1.3`Eliminar vulnerabilidades de protocolos obsoletos
    Cabeçalho HSTS`Header always set Strict-Transport-Security``add_header Strict-Transport-Security`Forçar HTTPS ao nível do navegador, prevenir SSL stripping
    OCSP Stapling`SSLUseStapling on``ssl_stapling on`Reduzir latência de handshake, melhorar privacidade
    Desativar tickets de sessão`SSLSessionTickets off``ssl_session_tickets off`Prevenir degradação de forward secrecy
    Conjunto de cifras forte`SSLCipherSuite ECDHE-…``ssl_ciphers ECDHE-…`Aplicar cifras AEAD, eliminar RC4/3DES
    HTTP/2`Protocols h2 http/1.1``listen 443 ssl http2`Melhoria de desempenho sobre TLS

    Verificar e Testar a Instalação SSL

    A instalação não está completa até ter verificado o resultado de uma perspetiva externa.

    Verificação no Navegador

    Visite https://yourdomain.com. O ícone de cadeado confirma um certificado válido e confiável. Clique no cadeado e inspecione os detalhes do certificado: verifique se o Nome Comum ou o Nome Alternativo do Sujeito corresponde ao seu domínio e verifique a data de expiração.

    Teste de Servidor SSL Labs

    Navegue para o SSL Labs e introduza o seu domínio. O relatório classifica a sua configuração TLS de F a A+ e assinala problemas específicos: conjuntos de cifras fracos, certificados de cadeia em falta, ausência de HSTS e suporte de protocolo. Uma classificação A+ requer HSTS com um max-age longo e sem suporte para TLS 1.0 ou 1.1.

    Verificação por Linha de Comandos com OpenSSL

    openssl s_client -connect yourdomain.com:443 -servername yourdomain.com

    Isto apresenta a cadeia de certificados completa, o conjunto de cifras negociado e a versão TLS. Procure Verify return code: 0 (ok) no final da saída. Qualquer código de retorno diferente de zero indica um problema de cadeia ou confiança.

    Para verificar diretamente a data de expiração do certificado:

    echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | openssl x509 -noout -dates

    Verificar Conteúdo Misto

    Após ativar o HTTPS, o conteúdo misto é o problema residual mais comum. Ocorre quando uma página HTTPS carrega recursos (imagens, scripts, folhas de estilo, iframes) via HTTP. O conteúdo misto bloqueia recursos ativos (scripts, iframes) completamente nos navegadores modernos e gera avisos na consola para recursos passivos (imagens).

    Corrija o conteúdo misto:

    1. Atualizando todos os URLs http:// codificados no seu CMS ou HTML para https:// ou relativos ao protocolo //.
    2. Adicionando um cabeçalho Content Security Policy com upgrade-insecure-requests como solução temporária abrangente:
    add_header Content-Security-Policy "upgrade-insecure-requests" always;
    1. Utilizando as Ferramentas de Desenvolvimento do navegador (F12 > Consola) para identificar os recursos específicos que causam o problema.

    Renovação de Certificados e Gestão do Ciclo de Vida

    Fonte do CertificadoValidade PadrãoMétodo de RenovaçãoAutomatização
    Let’s Encrypt (Certbot)90 dias`certbot renew` via temporizador systemdTotalmente automático
    CA Comercial (cPanel)1–2 anosRe-emissão e re-instalação manualManual ou com scripts
    CA Comercial (SSH)1–2 anosSubstituir ficheiros, recarregar servidor webAutomatizável com cron
    CA Interna / auto-assinadoPersonalizadoManualManual

    Para certificados comerciais geridos manualmente, defina um lembrete de calendário 30 dias antes da expiração. Um certificado expirado é pior do que nenhum certificado — os navegadores exibem um erro de bloqueio de página inteira que os utilizadores não conseguem contornar facilmente.

    Se estiver a executar múltiplos domínios ou uma aplicação de alto tráfego num Servidor Dedicado, considere implementar uma solução centralizada de gestão de certificados como cert-manager (Kubernetes), Vault PKI, ou um certificado wildcard para reduzir a sobrecarga de renovação em subdomínios.

    Matriz de Decisão: Qual Método de Instalação Utilizar

    CenárioMétodo Recomendado
    Alojamento partilhado, sem acesso SSHGestor SSL/TLS do cPanel
    VPS ou servidor dedicado, certificado gratuito necessárioCertbot (Let’s Encrypt)
    VPS ou servidor dedicado, certificado comercial OV/EVInstalação manual via SSH
    Certificado wildcard (`*.domain.com`)SSH manual + desafio DNS-01 via Certbot
    Certificado SAN multi-domínioInstalação manual via SSH
    Sem experiência técnica, alojamento geridoAutoSSL do cPanel ou SSL de um clique do fornecedor de alojamento

    Lista de Verificação de Pontos-Chave Técnicos

    • Confirme que a porta 443 está aberta na sua firewall antes de instalar qualquer certificado.
    • Verifique sempre se a chave privada corresponde ao certificado antes da instalação: openssl x509 -noout -modulus -in certificate.crt | md5sum e openssl rsa -noout -modulus -in private.key | md5sum devem produzir hashes idênticos.
    • Inclua a cadeia intermédia completa (ca_bundle.crt) — omiti-la causa falhas de confiança em navegadores móveis mesmo quando o Chrome no desktop mostra um cadeado.
    • Defina chmod 600 no ficheiro de chave privada; nunca o exponha num diretório acessível pela web.
    • Desative TLS 1.0 e TLS 1.1 na configuração do seu servidor web — estes protocolos estão obsoletos e são exploráveis.
    • Ative HSTS com includeSubDomains apenas após confirmar que todos os subdomínios também servem HTTPS.
    • Execute certbot renew --dry-run após a configuração inicial do Certbot para confirmar que o pipeline de renovação funciona.
    • Teste com o SSL Labs após cada instalação ou alteração de configuração.
    • Audite o conteúdo misto imediatamente após mudar para HTTPS — quebra funcionalidades silenciosamente.
    • Para certificados wildcard do Let’s Encrypt, utilize o desafio DNS-01, não o HTTP-01.

    Perguntas Frequentes

    Qual é a diferença entre um certificado SSL e um certificado TLS?

    SSL (Secure Sockets Layer) é o protocolo legado que foi descontinuado em 1999. O seu sucessor, TLS (Transport Layer Security), é o que todas as ligações HTTPS modernas realmente utilizam. O termo “certificado SSL” persiste como abreviatura da indústria, mas todos os certificados emitidos hoje operam sobre TLS 1.2 ou TLS 1.3.

    Por que razão o meu certificado SSL aparece como confiável no Chrome mas não em dispositivos Android?

    Isto é quase sempre um certificado de cadeia intermédia em falta. O Chrome no desktop tem um mecanismo agressivo de obtenção de certificados (AIA fetching) que pode reconstruir a cadeia mesmo quando está ausente do servidor. O armazenamento do sistema Android não o faz. Inclua sempre o ficheiro de cadeia ca_bundle.crt na configuração do seu servidor.

    Posso instalar um certificado SSL num domínio que ainda não tem um site?

    Sim, mas apenas se o registo DNS A do domínio resolver para o endereço IP do servidor. A CA deve conseguir alcançar o servidor para concluir a validação do domínio. Se o DNS ainda não tiver propagado, o desafio falhará.

    Como renovo um certificado SSL comercial sem tempo de inatividade?

    Gere um novo CSR no servidor, submeta-o à sua CA, receba o novo pacote de certificados, substitua os ficheiros de certificado no servidor e recarregue o servidor web (systemctl reload apache2 ou systemctl reload nginx). Um recarregamento aplica o novo certificado sem interromper as ligações existentes, ao contrário de um reinício completo.

    A instalação de um certificado SSL redireciona automaticamente HTTP para HTTPS?

    Não. Instalar um certificado apenas ativa o HTTPS. O redirecionamento de HTTP para HTTPS deve ser configurado separadamente no seu host virtual ou bloco de servidor. Os plugins --apache e --nginx do Certbot oferecem-se para configurar este redirecionamento automaticamente durante a instalação. Para instalações manuais, adicione uma diretiva explícita Redirect permanent (Apache) ou return 301 (Nginx) no bloco de servidor da porta 80.

    15%

    Poupe 15% em todos os serviços

    Teste as suas habilidades e obtenha Desconto em qualquer plano

    Utilizar o código:

    Skills
    Começar a trabalhar