Os certificados SSL possuem vários formatos de arquivo que determinam o armazenamento e a compatibilidade com servidores. Antes de trabalhar com esses arquivos, entenda um ponto fundamental: as extensões não indicam a codificação de forma confiável. Um arquivo .crt pode ter codificação PEM ou DER. Sempre inspecione o conteúdo do arquivo para confirmar o formato real.
Este tópico aborda os formatos mais comuns, a escolha do formato adequado para seu servidor, a identificação de arquivos desconhecidos e a conversão entre formatos.
Formatos de arquivo de certificado
|
Extensão |
Codificação |
Descrição |
|
|
Texto (PEM) |
Extensão mais utilizada. Armazena certificado, chave privada, cadeia de certificados ou uma combinação desses elementos. Verifique os marcadores |
|
|
Texto (PEM) ou binário (DER) |
Geralmente armazena uma chave privada. |
|
|
Texto (PEM) ou binário (DER) |
Normalmente contém apenas o certificado (chave pública e informações de identidade), sem a chave privada. Pode ser um único certificado de servidor ou uma cadeia que inclui certificados intermediários. |
|
|
Binário (PKCS#12) |
Reúne o certificado do servidor, a chave privada e a cadeia de certificados em um único arquivo protegido por senha. A extensão |
|
|
Binário (JKS) |
Formato proprietário Java Keystore (JKS). Armazena entradas de chave (chave privada e cadeia de certificados) e entradas de confiança (certificados de CA). Desde o Java 9, o formato recomendado é o PKCS#12. |
Conceitos fundamentais
Arquivos de certificado SSL envolvem quatro conceitos relacionados: componentes do certificado, métodos de codificação, formatos de contêiner e extensões de arquivo. Compreender a distinção entre eles facilita o trabalho com diferentes ferramentas e servidores.
Componentes do certificado
Certificado SSL: Credencial de identidade que contém o nome de domínio, a chave pública, o emissor e o período de validade.
Chave privada: Par da chave pública presente no certificado. Utilizada para autenticação de identidade e comunicação criptografada. Mantenha a chave privada em total sigilo.
Cadeia de certificados: Caminho completo de confiança do certificado do servidor até o certificado da CA raiz, incluindo um ou mais certificados de CA intermediária.
Métodos de codificação
A codificação define como os dados binários são serializados em um arquivo.
Privacy-Enhanced Mail (PEM): Formato de texto que utiliza codificação Base64, delimitado pelos marcadores
-----BEGIN...-----e-----END...-----. Um único arquivo PEM pode conter um certificado, uma chave privada ou ambos.Distinguished Encoding Rules (DER): Formato binário que representa a codificação direta de dados ASN.1. O PEM consiste essencialmente em dados DER codificados em Base64 e envoltos por marcadores de cabeçalho e rodapé. Arquivos DER são mais compactos, mas não podem ser lidos em editores de texto.
Formatos de contêiner
Formatos de contêiner agrupam vários componentes em um único arquivo.
PFX/P12 (PKCS#12): Armazenamento binário de certificados que empacota o certificado do servidor, a chave privada e a cadeia de certificados intermediários em um único arquivo protegido por senha. Recomendado para implantação no IIS do Windows, em servidores de aplicação Java ou para migração de certificados entre servidores.
Java Keystore (JKS): Armazenamento de certificados específico para Java. Migre para PKCS#12 para garantir maior compatibilidade, pois este é o padrão do Java desde a versão 9.
As extensões de arquivo são apenas uma convenção de nomenclatura. Por exemplo, um arquivo .crt pode ter codificação PEM ou DER. Inspecione o conteúdo do arquivo para confirmar o formato real.
Escolha o formato para seu servidor
|
Servidor |
Formato |
Arquivos necessários |
Observações |
|
Nginx, Apache |
PEM |
Arquivo de certificado ( |
Configure os arquivos de certificado e chave privada separadamente. O arquivo de certificado deve conter a cadeia completa, incluindo o certificado do servidor e todos os certificados intermediários. |
|
Tomcat, JBoss, WebLogic |
PKCS#12 |
Arquivo de keystore ( |
Formato padrão para servidores de aplicação Java. Caso ainda utilize JKS, migre para PKCS#12. |
|
IIS |
PFX |
Arquivo de keystore ( |
Importe o arquivo PFX protegido por senha para implantar o certificado e a chave privada juntos. |
|
IBM WebSphere |
KDB |
Arquivo de keystore ( |
Formato proprietário da IBM. Gerencie-o com a ferramenta |
Após adquirir e emitir um certificado no Certificate Management Service, baixe-o no formato exigido pelo seu servidor. Para mais informações, consulte Baixar um certificado SSL.
Construção da cadeia de certificados para Nginx e Apache
Se a autoridade certificadora (CA) fornecer um arquivo separado de certificado intermediário, concatene-o ao certificado do servidor antes da implantação. Não inclua o certificado da CA raiz — utilize apenas o certificado do servidor e os certificados intermediários.
# Run on Linux or macOS
cat server.crt chain.crt > fullchain.crt
Identificação de formatos de arquivo de certificado
Antes de implantar, confirme o formato do arquivo para evitar falhas.
Identificar arquivos PEM pelo conteúdo
Abra o arquivo em um editor de texto. Um arquivo PEM contém um bloco ASCII com os marcadores BEGIN e END. O marcador indica o conteúdo do arquivo:
-----BEGIN CERTIFICATE-----
MIIE5zCCA8+gAwIBAgIQN+whYc2BgzAogau0dc3PtzANBgkqh......
-----END CERTIFICATE-----
Marcadores comuns:
|
Marcador |
Conteúdo |
|
|
Certificado |
|
|
Chave privada |
|
|
Chave privada criptografada |
|
|
Chave privada de Curva Elíptica (EC) |
Identificar formatos usando OpenSSL
Para arquivos binários ou quando forem necessárias informações detalhadas, use o OpenSSL para inspecionar o arquivo.
Certificado PEM
# Displays subject, issuer, validity period, and other details
openssl x509 -in certificate.crt -noout -text
Se o comando for executado com sucesso, o arquivo é um certificado com codificação PEM.
Chave privada PEM
# Displays key type and length
openssl pkey -in private.key -noout -text
Armazenamento de certificados PFX/P12
# Lists all entries in the PKCS#12 file; prompts for the import password
openssl pkcs12 -in keystore.pfx -info -noout
Certificado DER
# The -inform der flag tells OpenSSL to read binary DER input
openssl x509 -in certificate.der -inform der -noout -text
Conversão de formatos de certificado
Há duas opções para converter formatos.
Opção 1: Ferramenta de conversão do Certificate Management Service (sem linha de comando)
O Certificate Management Service oferece uma ferramenta integrada que suporta conversões entre os formatos PEM e PFX, PEM e JKS, além de PEM e PKCS8. Consulte Ferramentas de certificado.
Opção 2: Ferramenta de linha de comando OpenSSL
O OpenSSL está disponível em todos os sistemas operacionais e suporta todos os caminhos comuns de conversão.
Converter PEM para PFX (para IIS e Tomcat)
Este comando combina um arquivo de certificado, um arquivo de chave privada e um arquivo opcional de cadeia em um único arquivo PFX protegido por senha.
# Server certificate and private key only
openssl pkcs12 -export \
-out server.pfx \ # Output PFX file
-inkey private.key \ # Private key file
-in server.crt # Server certificate
# With a complete certificate chain
openssl pkcs12 -export \
-out server.pfx \
-inkey private.key \
-in server.crt \
-certfile chain.crt # Intermediate certificate chain
Dividir PFX em PEM (para Nginx e Apache)
Estes comandos extraem o certificado e a chave privada de um arquivo PFX para arquivos PEM separados.
# Step 1: Extract the private key (password-protected)
openssl pkcs12 -in server.pfx -nocerts -out server.encrypted.key
# Step 2: Extract the server certificate only (leaf certificate, no CA chain)
openssl pkcs12 -in server.pfx -clcerts -nokeys -out server.crt
# Step 3: Extract the intermediate CA certificates
# Note: The root CA certificate is not required for deployment
openssl pkcs12 -in server.pfx -cacerts -nokeys -out chain.crt
# Step 4 (optional): Remove the password from the private key
# Required for servers that start non-interactively (Nginx, Apache)
openssl pkey -in server.encrypted.key -out private.key
# Step 5 (optional): Concatenate into a single chain file
# Skip this step if chain.crt does not exist (no intermediate certs in the PFX)
# Order matters: server certificate first, then intermediate certificates
cat server.crt chain.crt > fullchain.crt
O arquivo private.key resultante não possui proteção por senha. Restrinja as permissões imediatamente: chmod 400 private.key (leitura apenas para o proprietário do arquivo).
Configuração do Nginx após a conversão:
ssl_certificate /path/to/fullchain.crt;
ssl_certificate_key /path/to/private.key;
Configuração do Apache após a conversão:
Para Apache 2.4.8 e versões posteriores:
SSLCertificateFile /path/to/fullchain.crt
SSLCertificateKeyFile /path/to/private.key
Para versões do Apache anteriores à 2.4.8, configure a cadeia intermediária separadamente:
SSLCertificateFile /path/to/server.crt
SSLCertificateKeyFile /path/to/private.key
SSLCertificateChainFile /path/to/chain.crt
Converter entre DER e PEM
DER e PEM representam os mesmos dados em codificações diferentes — ASN.1 binário versus ASN.1 codificado em Base64 com marcadores. Converta entre eles quando um servidor ou ferramenta exigir uma codificação específica.
# DER to PEM
openssl x509 -inform der -in certificate.cer -out certificate.pem
# PEM to DER
openssl x509 -inform pem -in certificate.pem -outform der -out certificate.der
Converter JKS para PKCS#12 (caminho de migração recomendado)
Use o utilitário keytool do Java para converter um Java Keystore (JKS) legado para PKCS#12.
keytool -importkeystore \
-srckeystore keystore.jks \ # Source JKS file
-srcstoretype JKS \
-destkeystore keystore.p12 \ # Output PKCS#12 file
-deststoretype PKCS12
Esse processo migra todas as entradas de keystore.jks para keystore.p12. Para migrar apenas uma entrada específica, adicione -srcalias <alias> e -destalias <alias>. O comando solicitará tanto a senha de origem (JKS) quanto a de destino (PKCS#12).