Tudo que você precisa saber sobre certificados SSL: .pem, .crt, .cer, .key e .p12

3 minutos, Postado por Marlon Luan em

Se você já configurou HTTPS no seu servidor Linux, provavelmente já se deparou com diversas extensões de arquivos de certificado: .pem, .crt, .cer, .key e .p12. Cada uma tem seu papel, e entender a diferença entre elas é crucial para configurar corretamente o SSL/TLS e manter a segurança do seu site.

Neste artigo, vamos explicar o que cada extensão significa, para que serve e como usar no Linux.

O que são certificados SSL/TLS?

Certificados SSL/TLS permitem que a comunicação entre o navegador do usuário e seu servidor seja criptografada. Eles funcionam em conjunto com chaves criptográficas:

  • Chave privada: mantém-se segura no servidor.
  • Certificado público: enviado aos navegadores para autenticar o servidor.
  • Cadeia de certificados: garante que o certificado público é confiável, passando por autoridades intermediárias até a raiz confiável.

No Linux, a forma como esses arquivos são armazenados pode variar, e é por isso que existem diferentes extensões.

.pem — Privacy-Enhanced Mail

  • É um formato de arquivo, não um tipo de certificado.

  • Normalmente em texto Base64, legível, e começa com:

    -----BEGIN CERTIFICATE-----
    

    ou

    -----BEGIN PRIVATE KEY-----
    
  • Pode conter:

    • Certificado público
    • Chave privada
    • Cadeia de certificados
  • Muito usado em servidores Linux, Nginx, Apache e AWS.

Exemplo de uso no Nginx:

ssl_certificate /etc/ssl/certs/site.pem;
ssl_certificate_key /etc/ssl/private/site.key;

.crt e .cer — Certificados públicos

  • Contêm apenas o certificado público (não a chave privada).
  • .crt é comum no Linux e servidores web.
  • .cer é comum no Windows, mas ambos podem estar em formato PEM (texto) ou DER (binário).

Exemplo de verificação do certificado:

openssl x509 -in site.crt -text -noout

.key — Chave privada

  • Mantém a chave secreta do servidor.
  • Nunca deve ser compartilhada.
  • Também é geralmente em texto Base64.

Verificar chave privada:

openssl rsa -in site.key -check

.p12 / .pfx — Pacote completo

  • Arquivo binário que combina:

    • Chave privada
    • Certificado público
    • Cadeia de certificados
  • Muito usado em Windows (IIS, Exchange) e Java.

  • Ideal para transportar ou importar certificados completos.

Como converter para Linux:

# Extrair chave privada
openssl pkcs12 -in site.p12 -nocerts -out site.key -nodes

# Extrair certificado público
openssl pkcs12 -in site.p12 -clcerts -nokeys -out site.crt

# Extrair cadeia de certificados
openssl pkcs12 -in site.p12 -cacerts -nokeys -out chain.pem

Resumo prático

ExtensãoConteúdoFormatoUso típico
.pemCertificado ou chaveTexto Base64Linux, Nginx, Apache
.crtCertificado públicoTexto/BinárioServidor web
.cerCertificado públicoTexto/BinárioWindows
.keyChave privadaTexto Base64Linux, Nginx, Apache
.p12 / .pfxCertificado + chave + CA bundleBinárioWindows, Java

Regra prática no Linux:

  1. site.key → chave privada
  2. site.crt → certificado público
  3. chain.pem → cadeias intermediárias (se houver)

Dicas finais

  • Sempre mantenha sua chave privada segura (.key).
  • No Nginx, você pode usar .crt ou .pem de forma intercambiável, desde que estejam em formato PEM.
  • Para simplificar backups ou migrações, você pode usar .p12 para transportar tudo junto.
  • Teste sempre a configuração:
nginx -t
systemctl reload nginx

Conclusão

Entender a diferença entre .pem, .crt, .cer, .key e .p12 é essencial para configurar HTTPS corretamente no Linux. Cada arquivo tem um papel: chave privada, certificado público ou pacote completo. Seguindo essas boas práticas, você garante que seu site ou aplicação web estará seguro e funcionando perfeitamente.

comments powered by Disqus

Veja também: