Por Davi Netto em 09-08-2021

Dúvidas comuns sobre extensões de certificados SSL

Um ponto de grande confusão dos certificados SSL sem dúvida são os vários formatos em que ele estão disponíveis. Iniciando pelo basico, saiba que todos os certificados SSL são certificados x.509. Esse é o formato padrão da estrutura de uma chave pública. No entanto, grande parte das dúvidas está relacionada à extensão dos arquivos e compatibilidade com sistemas.

Certificados SSL podem ser emitidos utilizando diferentes algoritmos de codificação (encoding) estando disponíveis nas extensões CER, CRT, DER, PEM, P7B, P7S, PFX, e P12.

É importante considerar que:

  • Autoridades de Certificação (CA) emitem certificados em formatos diferentes;
  • Servidores diferentes aceitam diferentes tipos de certificados.

Caso você possua um certificado em uma extensão diferente da requerida pelo seu servidor, é necessário converter o certificado SSL para o formato desejado. Por exemplo: Se você possuir um certificado em PKCS7 mas o servidor aceita apenas PEM, você precisa convertê-lo antes de usá-lo.

Para facilitar, vamos entender um pouco melhor sobre os tipos mais comuns de certificados.

PEM

PEM (Privacy-enhanced Mail) é o formato de certificado mais emitido pelas autoridades de certificação (CA). Arquivos PEM possuem encoding em ASCII BASE64 e podem ser vistos em vários formatos como .pem, .crt, .cer, ou .key. São amplamente usados em servidores usando OpenSSL, como Apache e NGINX.

Este certificado é caracterizado por dizeres —- BEGIN CERTIFICATE—- e —-END CERTIFICATE—-. Por exemplo: Chave Privada: Contido entre —- BEGIN RSA PRIVATE KEY—– e —–END RSA PRIVATE KEY—– . CSR: Contido entre —–BEGIN CERTIFICATE REQUEST—– e —–END CERTIFICATE REQUEST—– .

P7B/PKCS#7

Certificados P7B/PKCS#7 utilizam encoding em ASCII BASE64 e são vistos nos formatos .p7b ou .p7c. As plataformas mais comuns desse tipo de certificado são Microsoft Windows e Java Tomcat.

Estes arquivos são caracterizados pelos dizeres “—–BEGIN PKCS7—–” e “—–END PKCS7—–”.

DER

DER é um acrônimo para “distinguished encoding rules” e é uma forma binária de certificados PEM. Este formato é aplicável tanto para certificados e chaves privadas e utilizado majoritariamente das extensões .cer e .der. É muito comum em plataformas Java.

PFX/P12/PKCS#12

O formato PFX/P12/PKCS#12 possuem normalmente a extensão .pfx ou .p12. São tipicamente usados em Windows.

Como converter certificados SSL?

A forma mais fácil de converter um certificado SSL é utilizando uma ferramenta online mas isso pode expor o seu certificado a terceiros. A forma mais segura, no entanto, é utilizar o software gratuito Open SSL e realizar as conversões direto em seu computador. Abaixo, listamos os principais comandos de conversão:

Converter X.509 para PEM

openssl x509 -in certificatename.cer -outform PEM -out certificatename.pem

Converter DER para PEM (Binário para Base64 ASCII)

openssl x509 -inform der -in certificatename.der -out certificatename.pem

Converter PEM para DER (Base64 ASCII para Binário)

openssl x509 -inform der -in certificatename.der -out certificatename.pem

Converter PEM para PKCS#7 (.p7b não inclui a chave privada)

openssl crl2pkcs7 -nocrl -certfile certificatename.pem -out certificatename.p7b -certfile CACert.cer

Converter PKCS#7 para PEM

openssl pkcs7 -print_certs -in certificatename.p7b -out certificatename.pem

Converter PKCS#12 para PEM (PKCS#12 é protegido por senha)

openssl pkcs12 -in certificatename.pfx -out certificatename.pem

Converter PKCS7 para PKCS12

Essa conversão requer 2 etapas. Primeiro você converte o arquivo P7B em CER e depois combina o arquivo CER e a chave privada em um arquivo PFX.

openssl pkcs7 -print_certs -in certificatename.p7b -out certificatename.cer

openssl pkcs12 -export -in certificatename.cer -inkey privateKey.key -out certificatename.pfx -certfile cacert.cer

Privacidade é o assunto da vez. Vai ficar de fora?

Receba nossos guias práticos que te ajudarão a melhorar a tecnologia na sua empresa.