Tudo que você precisa saber sobre certificados SSL: .pem, .crt, .cer, .key e .p12
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ão | Conteúdo | Formato | Uso típico |
|---|---|---|---|
.pem | Certificado ou chave | Texto Base64 | Linux, Nginx, Apache |
.crt | Certificado público | Texto/Binário | Servidor web |
.cer | Certificado público | Texto/Binário | Windows |
.key | Chave privada | Texto Base64 | Linux, Nginx, Apache |
.p12 / .pfx | Certificado + chave + CA bundle | Binário | Windows, Java |
Regra prática no Linux:
site.key→ chave privadasite.crt→ certificado públicochain.pem→ cadeias intermediárias (se houver)
Dicas finais
- Sempre mantenha sua chave privada segura (
.key). - No Nginx, você pode usar
.crtou.pemde forma intercambiável, desde que estejam em formato PEM. - Para simplificar backups ou migrações, você pode usar
.p12para 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.