Como converter PEM para DER
- Cole o bloco PEM na entrada, ou arraste um arquivo
.pem,.crt,.keyou.csr. - Escolha a saída em Converter para:
- DER – Base64 em uma linha: o corpo do PEM sem as linhas de cabeçalho e sem quebras de linha, pronto para um campo JSON ou uma variável de ambiente.
- DER – hex: os mesmos bytes em hex, para arrays de bytes e rastros de protocolo.
- PEM (64 colunas) e Chave pública (PEM) estão lá para o caminho inverso e para extrair uma chave pública.
- Clique em Baixar .der para salvar o arquivo binário, ou em Copiar saída para a forma em texto.
O conversor detecta certificados, CSRs, CRLs, chaves públicas e chaves privadas (PKCS#1, PKCS#8, SEC1 EC), então não há nada a escolher quanto ao tipo de entrada.
O que a conversão faz
O PEM é um envelope de texto em volta do DER. Pegue este certificado (encurtado):
-----BEGIN CERTIFICATE-----
MIIBtzCCAV2gAwIBAgIUfX6gOa1S96OttEsj3WbuIdu0cE0wCgYIKoZIzj0EAwIw
...
-----END CERTIFICATE-----
Remova as duas linhas marcadoras, junte as linhas restantes, decodifique o Base64 e você tem o arquivo DER: aqui, 443 bytes começando com 30 82 01 b7, o cabeçalho de uma SEQUENCE ASN.1. O rótulo nas linhas marcadoras é a única informação que se perde. Arquivos DER não têm rótulo, e por isso as ferramentas que leem DER precisam ser informadas do tipo do arquivo ou têm de deduzi-lo pela estrutura.
| Forma | Tamanho deste certificado | Onde é usada |
|---|---|---|
| PEM | 656 bytes | nginx, Apache, HAProxy, a maioria das ferramentas Linux |
| DER em Base64 de uma linha | 592 caracteres | APIs JSON, arrays x5c em JWKs, variáveis de ambiente |
| DER (binário) | 443 bytes | ferramentas Java e Windows, firmware, downloads application/pkix-cert |
Onde você precisa de DER
- Dispositivos embarcados e firmware: certificados compilados em C como array de bytes são quase sempre DER. Use a saída hex e cole num array.
- Plataformas Apple:
SecCertificateCreateWithDatarecebe dados DER, não texto PEM. - O parâmetro
x5cde um JWK e o elemento<ds:X509Certificate>em metadados SAML guardam DER em Base64 sem os cabeçalhos PEM. - URLs de CA Issuers em certificados costumam servir um arquivo
.cerem DER. - Windows: arquivos
.cerpodem estar em qualquer uma das formas, mas algumas caixas de diálogo de importação mais antigas e alguns appliances só aceitam DER.
PEM para DER com OpenSSL, Python e certutil
openssl x509 -in cert.pem -outform der -out cert.der
openssl req -in app.csr -outform der -out app.der
openssl pkey -in key.pem -outform der -out key.der
grep -v -- '-----' cert.pem | tr -d '\n'
A última linha imprime o DER em Base64 de uma linha de um arquivo com um único certificado. Em Python, ssl.PEM_cert_to_DER_cert(open("cert.pem").read()) devolve os bytes DER de um certificado. No Windows, certutil -decode cert.pem cert.der remove os marcadores e decodifica. Mais em Base64 com OpenSSL e Base64 em Python.
Problemas comuns
- Vários blocos num arquivo: as saídas de texto convertem todos os blocos, mas Baixar .der salva só o primeiro objeto, porque um arquivo DER guarda exatamente um. Separe a cadeia antes ou baixe cada certificado pelo cartão dele no decodificador de certificados.
-----BEGIN ENCRYPTED PRIVATE KEY-----: converte sem problema, mas o DER continua criptografado. Descriptografar exige a senha e não é feito aqui.- Cabeçalhos
Proc-Type: 4,ENCRYPTED: a criptografia legada do OpenSSL não tem forma DER. Rode antesopenssl pkey -in key.pem -out plain.pemcom a senha. -----BEGIN OPENSSH PRIVATE KEY-----: nem é ASN.1, então não há DER para gerar. Use a ferramenta de chaves SSH para obter a chave pública.
Perguntas frequentes
O PEM é só o Base64 do DER?
É. Um arquivo PEM são os bytes DER codificados em Base64, quebrados em 64 caracteres, entre uma linha -----BEGIN label----- e uma linha -----END label-----. Tirar essas linhas e decodificar o Base64 devolve exatamente o arquivo DER.
Como converter uma chave privada PEM em DER?
Cole aqui e escolha DER – Base64 em uma linha ou Baixar .der, ou rode openssl pkey -in key.pem -outform der -out key.der. A chave nunca sai da página, e os valores secretos dela não são exibidos.
Por que meu arquivo DER é menor que o PEM?
O Base64 transforma cada 3 bytes em 4 caracteres, e o PEM acrescenta quebras de linha e duas linhas de cabeçalho. Um certificado DER de 443 bytes vira um arquivo PEM de 656 bytes, cerca de 48% maior.