Guia completo de extensões de arquivos de certificados e chaves: PEM, CRT, DER, PFX e muito mais
Se você já configurou um servidor web (como Nginx ou Apache), gerenciou chaves SSH ou trabalhou com assinaturas digitais, provavelmente encontrou uma confusão de extensões de arquivo: .pem, .crt, .cer, .der, .p12, .pfx, .key, .csr e muito mais.
São todos iguais? Você pode simplesmente renomeá-los? Este guia desmistificará essas extensões, explicará o que há dentro delas e mostrará como trabalhar com elas de forma eficaz.
Por que existem tantas extensões?
A confusão decorre de dois fatores principais:
- O Padrão (X.509): Este é o padrão internacional para certificados de chave pública.
- A Codificação: Como os dados do certificado são realmente armazenados no arquivo (ASCII Base64 vs. Binário).
Essencialmente, diferentes plataformas (Windows vs. Linux), diferentes servidores (IIS vs. Nginx) e diferentes protocolos (SSL/TLS vs. SSH vs. PGP) preferiram historicamente diferentes maneiras de armazenar a mesma informação criptográfica subjacente.
Tabela de referência rápida: extensões comuns de certificado e chave
| Extensão | Formato | Descrição | Uso comum |
|---|---|---|---|
.pem |
ASCII (Base64) | Privacy Enhanced Mail | Servidores web (Nginx, Apache), certificados SSL/TLS, chaves privadas |
.crt, .cer |
ASCII ou Binário | Certificado | Apenas certificados públicos (sem chaves privadas) |
.der |
Binário | Distinguished Encoding Rules | Plataformas Java, Windows (muitas vezes usado para certificados CA específicos) |
.key |
ASCII ou Binário | Chave privada | A chave privada correspondente a um certificado público |
.csr |
ASCII (Base64) | Certificate Signing Request | O arquivo enviado a uma CA para solicitar um certificado assinado |
.p12, .pfx |
Binário | Arquivo PKCS#12 | Agrupamento de um certificado e sua chave privada em um único arquivo protegido por senha |
.p7b, .p7c |
ASCII (Base64) | PKCS#7 / CMS | Exportação de cadeias de certificados (sem chaves privadas) |
.asc, .sig, .gpg |
ASCII ou Binário | PGP / OpenPGP | Assinaturas digitais, e-mails criptografados e verificação de software |
1. Codificações de certificado X.509 (os "três grandes")
PEM (Privacy Enhanced Mail) — .pem, .crt, .cer, .key
Este é o formato mais comum que você encontrará em servidores Linux e Web. É um formato baseado em ASCII (texto) que começa com um cabeçalho como -----BEGIN CERTIFICATE----- e termina com -----END CERTIFICATE-----. Os dados entre eles são codificados em Base64.
- Prós: Legível por humanos, fácil de copiar/colar em arquivos de configuração.
- Uso da extensão: Embora
.pemseja o padrão, muitas pessoas usam.crtou.cerpara certificados públicos e.keypara chaves privadas, mesmo que tecnicamente todos estejam no formato PEM.
DER (Distinguished Encoding Rules) — .der, .cer
Esta é a versão binária de um arquivo PEM. Se você abri-lo em um editor de texto, verá caracteres "ilegíveis".
- Prós: Mais compacto que o PEM.
- Onde encontrá-lo: Comum em ambientes Java, exportações de certificados do Windows e alguns módulos de segurança de hardware (HSMs).
PKCS#12 (Personal Information Exchange) — .p12, .pfx
Ao contrário do PEM e do DER, que geralmente contêm um único certificado ou chave, o PKCS#12 é um formato de arquivo de arquivamento. Ele pode armazenar um certificado, sua chave privada e toda a cadeia da CA em um único arquivo protegido por senha.
- Onde encontrá-lo: Padrão para Windows (IIS), Java (KeyStore) e Chaves do macOS.
- Nota:
.pfxé a antiga extensão da Microsoft, enquanto.p12é o padrão multiplataforma mais recente, mas eles são funcionalmente idênticos.
2. Solicitação e extensões de metadados
CSR (Certificate Signing Request) — .csr
Isso não é um certificado em si. É uma solicitação que você gera em seu servidor (contendo sua chave pública e informações da organização) para enviar a uma Autoridade de Certificação (como Let's Encrypt, DigiCert). Eles a assinarão e enviarão de volta um arquivo .crt ou .pem.
PKCS#7 / CMS — .p7b, .p7c
Este formato é usado principalmente para compartilhar "cadeias de certificados". Ele pode conter seu certificado mais os certificados da CA intermediária e raiz. Ele nunca contém uma chave privada. Você verá isso com frequência ao baixar certificados de uma CA no formato "Windows" ou "IIS".
3. Extensões PGP e GPG
Se você estiver verificando downloads de software (como o kernel do Linux ou uma biblioteca popular), verá:
.asc: Um arquivo PGP com armadura ASCII (assinatura baseada em texto)..sig,.gpg: Assinaturas ou chaves PGP binárias..pub: Frequentemente usado para denotar uma chave pública PGP.
4. Como abrir e verificar esses arquivos
No Linux / macOS / Windows (com OpenSSL)
O OpenSSL é o canivete suíço para esses arquivos. Aqui estão alguns comandos comuns:
Para visualizar um arquivo PEM (certificado público):
openssl x509 -in certificate.crt -text -noout
Para visualizar um arquivo DER (binário):
openssl x509 -in certificate.der -inform der -text -noout
Para visualizar um arquivo PKCS#12 (.p12 / .pfx):
openssl pkcs12 -info -in key-and-cert.p12
5. Convertendo entre formatos
As plataformas geralmente exigem formatos específicos. Veja como convertê-los:
PEM para DER:
openssl x509 -in cert.pem -outform der -out cert.der
DER para PEM:
openssl x509 -in cert.der -inform der -outform pem -out cert.pem
PEM para PFX (.p12): (Requer a combinação do certificado e da chave privada)
openssl pkcs12 -export -out certificate.pfx -inkey private.key -in certificate.crt -certfile CA-chain.crt
Perguntas frequentes (FAQ)
P: Posso apenas renomear um arquivo .pem para .crt?
R: Em muitos casos, sim. A maioria dos servidores web (como Nginx) procura pelo cabeçalho "BEGIN CERTIFICATE" dentro do arquivo em vez da extensão. No entanto, se a plataforma esperar um arquivo .der binário e você fornecer um arquivo .pem renomeado, ela falhará.
P: Qual é a diferença entre .p12 e .pfx?
R: Não há diferença funcional. .pfx era a extensão proprietária da Microsoft, enquanto .p12 é o padrão da indústria (PKCS#12). Ambos servem como recipientes protegidos por senha para certificados e chaves privadas.
P: Por que não consigo ver minha chave privada em um arquivo .p7b?
R: Porque o padrão PKCS#7 (usado por .p7b) é projetado especificamente para distribuição de certificados e não suporta o armazenamento de chaves privadas. Se você precisar agrupar uma chave privada, deverá usar o PKCS#12 (.p12).
P: Um arquivo .key é sempre uma chave privada?
R: Geralmente, mas nem sempre. Embora .key seja a extensão convencional para chaves privadas, alguns fornecedores a usam para chaves públicas ou até mesmo arquivos de licença. Sempre verifique o conteúdo (por exemplo, -----BEGIN PRIVATE KEY-----).
Ferramentas relacionadas no Tool3M
- Gerador de Hash: Verifique a integridade dos seus arquivos de certificado baixados usando SHA-256.
- Guia de Certificados SSL/TLS: Saiba mais sobre os protocolos de segurança subjacentes.