Pular para o conteúdo
NyverraNyverra
Artigos
⌘K
InícioArtigosSite institucional
🇧🇷

Nyverra

Canal editorial

Artigos sobre tecnologia, operações e parceiros — infraestrutura, monitoramento e ambientes críticos.

Explorar

  • Início
  • Artigos
  • Categorias
  • Tags
  • Autores
  • Sobre
  • Contato
  • RSS
  • Site institucional

© 2026 Nyverra. Todos os direitos reservados.

blog.nyverra.com

  1. Índice
  2. Introdução
  3. O que é um Certificado SSL/TLS?
  4. Formatos de Certificado Explicados
  5. Geração de Certificados com Let's Encrypt e Certbot
  6. Conversão entre Formatos
  7. Boas Práticas e Segurança
  8. Troubleshooting Comum
  9. Conclusão

Certificados SSL/TLS: Guia Completo de Geração e Conversão entre Formatos

Índice

  1. Introdução

  2. O que é um Certificado SSL/TLS?

  3. Formatos de Certificado Explicados

  4. Geração de Certificados com Let's Encrypt e Certbot

  5. Conversão entre Formatos

  6. Boas Práticas e Segurança

  7. Troubleshooting Comum

Introdução

Certificados SSL/TLS são fundamentais para proteger dados em trânsito na internet. Seja você um administrador de infraestrutura, desenvolvedor ou gestor de TI, é essencial compreender como gerar, converter e gerenciar esses certificados.

Neste guia, você aprenderá:

  • Como gerar certificados Let's Encrypt usando Certbot

  • Os principais formatos de certificado e suas diferenças

  • Como converter certificados entre diversos formatos (.PEM, .PFX, .P12, .DER, .CRT, .KEY)

  • Boas práticas de segurança e armazenamento

  • Soluções para problemas comuns

Este artigo é destinado a profissionais de infraestrutura, DevOps e administradores de sistemas em ambientes corporativos.

O que é um Certificado SSL/TLS?

Um certificado SSL/TLS é um documento digital que:

  • Autentica a identidade de um servidor web

  • Criptografa a comunicação entre cliente e servidor

  • Valida a confiabilidade de um site

Componentes de um Certificado

Um certificado típico contém:

Certificate (Certificado X.509)
├── Domínios autorizados (CN, SAN)
├── Validade (Data de emissão e expiração)
├── Chave Pública
└── Assinatura da Autoridade Certificadora

Private Key (Chave Privada)
└── Deve ser mantida segura em todas as circunstâncias

Chain (Cadeia de Certificados)
└── Certificados intermediários para validação

Por que diferentes formatos?

Diferentes aplicações e plataformas suportam formatos distintos:

  • Servidores web (Nginx, Apache): geralmente usam .PEM

  • Windows/IIS: frequentemente requerem .PFX ou .P12

  • Aplicações Java: podem usar .JKS ou .P12

  • Dispositivos de rede: às vezes usam .DER ou .CRT

Formatos de Certificado Explicados

PEM (Privacy Enhanced Mail)

  • Extensão: .pem, .crt, .key

  • Conteúdo: Texto ASCII com delimitadores -----BEGIN/END

  • Componentes: Suporta chave privada, certificado e cadeia de certificados em arquivos separados ou únicos

  • Usado em: Nginx, Apache, OpenSSL, Linux/Unix

  • Exemplo:

-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC7...
-----END PRIVATE KEY-----

-----BEGIN CERTIFICATE-----
MIIDXTCCAkWgAwIBAgIJAKZ6gLSQ8Y/sMA0GCSqGSIb3DQEBAQUAD...
-----END CERTIFICATE-----

PFX e P12 (PKCS#12)

  • Extensão: .pfx, .p12

  • Conteúdo: Binário (formato proprietário)

  • Componentes: Contém certificado, chave privada e cadeia em um único arquivo

  • Proteção: Protegido por senha

  • Usado em: Windows/IIS, algumas aplicações Java, exportação/backup

  • Vantagem: Arquivo único, portátil, protegido por senha

DER (Distinguished Encoding Rules)

  • Extensão: .der, .cer

  • Conteúdo: Binário

  • Componentes: Apenas certificado público (sem chave privada)

  • Usado em: Sistemas que precisam apenas validar certificados

  • Nota: Não recomendado para produção isolado

CRT (Certificate)

  • Extensão: .crt

  • Conteúdo: Pode ser PEM ou DER

  • Nota: Mesma função que .cer; formato varia conforme o sistema

KEY (Private Key)

  • Extensão: .key

  • Conteúdo: Geralmente PEM

  • Nota: Contém apenas a chave privada

  • Segurança: Crítico manter protegido e com permissões restritas (chmod 400/600)

CSR (Certificate Signing Request)

  • Extensão: .csr

  • Conteúdo: Solicitação para CA assinar um certificado

  • Nota: Não é um certificado; será assinado para gerar o certificado final

Geração de Certificados com Let's Encrypt e Certbot

Pré-requisitos

# Debian/Ubuntu
sudo apt-get update
sudo apt-get install certbot

# RHEL/CentOS
sudo yum install certbot

# Validar instalação
certbot --version

Método 1: Desafio DNS (Recomendado para Wildcards)

Este método é ideal para certificados wildcard (*.exemplo.com.br) e ambientes sem servidor web direto.

Passo 1: Gerar o Certificado

sudo certbot certonly \
  --manual \
  --preferred-challenges dns \
  -d "*.exemplo.com.br" \
  -d "exemplo.com.br" \
  --agree-tos \
  --email [email protected]

Parâmetros explicados:

  • certonly: Gera apenas o certificado, sem modificar configurações

  • --manual: Permite controle total do processo

  • --preferred-challenges dns: Usa validação DNS

  • -d: Define domínios (repetir para múltiplos)

  • --agree-tos: Aceita os termos de serviço

  • --email: Contato para notificações de renovação

Passo 2: Validar Desafio DNS

Certbot solicitará que você adicione um registro TXT no DNS:

_acme-challenge.exemplo.com.br. IN TXT "xxxxxxxxxxxxxxxxxxxxx"

No seu provedor de DNS (Cloudflare, Route53, etc.):

  1. Acesse o painel de DNS

  2. Crie um novo registro TXT com a chave fornecida

  3. Aguarde propagação (até 2 minutos)

  4. Pressione Enter no Certbot para continuar

Passo 3: Validar Instalação

Os certificados serão salvos em:

/etc/letsencrypt/live/exemplo.com.br/
├── cert.pem           # Seu certificado
├── privkey.pem        # Sua chave privada
├── chain.pem          # Certificados intermediários
└── fullchain.pem      # Certificado + cadeia

Método 2: Desafio HTTP (Recomendado para Desenvolvimento)

Se você tiver um servidor web rodando:

sudo certbot certonly \
  --webroot \
  -w /var/www/html \
  -d "exemplo.com.br" \
  --agree-tos \
  --email [email protected]

Renovação Automática

# Testar renovação
sudo certbot renew --dry-run

# Certbot configura renovação automática via systemd ou cron
# Validar:
sudo systemctl status certbot.timer    # Systemd
sudo crontab -l                        # Cron

Conversão entre Formatos

1. PEM para PFX/P12

Combina certificado, chave privada e cadeia em um único arquivo protegido por senha.

Passo a Passo

# Navegar para o diretório de certificados
cd /etc/letsencrypt/live/exemplo.com.br/

# Converter para PFX
openssl pkcs12 -export \
  -out exemplo.com.br.pfx \
  -inkey privkey.pem \
  -in cert.pem \
  -certfile chain.pem

O que acontece:

  1. OpenSSL solicitará uma senha de proteção

  2. O arquivo .pfx será criado

  3. Este arquivo pode ser transportado com segurança

Sintaxe detalhada:

openssl pkcs12 -export         # Exportar para PKCS#12
  -out arquivo.pfx             # Arquivo de saída
  -inkey privkey.pem           # Chave privada
  -in cert.pem                 # Certificado público
  -certfile chain.pem          # Certificados intermediários

Opcional - Sem proteção por senha (não recomendado):

openssl pkcs12 -export \
  -out exemplo.com.br.pfx \
  -inkey privkey.pem \
  -in cert.pem \
  -certfile chain.pem \
  -passout pass:

2. PFX/P12 para PEM

Extrai componentes individuais de um arquivo PFX.

Extrair Certificado

openssl pkcs12 -in exemplo.com.br.pfx \
  -clcerts \
  -nokeys \
  -out cert.pem \
  -legacy

Parâmetros:

  • -clcerts: Inclui apenas certificados de cliente

  • -nokeys: Não inclui chaves privadas

  • -legacy: Compatibilidade com certificados antigos

Extrair Chave Privada

openssl pkcs12 -in exemplo.com.br.pfx \
  -nocerts \
  -out privkey.pem \
  -nodes \
  -legacy

Parâmetros:

  • -nocerts: Não inclui certificados

  • -nodes: Não criptografa a chave privada (saída em texto plano)

  • -legacy: Compatibilidade com formatos antigos

Extrair Cadeia de Certificados

openssl pkcs12 -in exemplo.com.br.pfx \
  -nokeys \
  -cacerts \
  -out chain.pem \
  -legacy

Parâmetros:

  • -cacerts: Extrai apenas certificados da CA

Script Automatizado para Extração Completa

#!/bin/bash

arquivo_pfx="exemplo.com.br.pfx"
senha="sua_senha_aqui"

echo "Extraindo certificado..."
openssl pkcs12 -in "$arquivo_pfx" \
  -clcerts -nokeys -out cert.pem \
  -passin pass:"$senha" -legacy

echo "Extraindo chave privada..."
openssl pkcs12 -in "$arquivo_pfx" \
  -nocerts -out privkey.pem \
  -nodes -passin pass:"$senha" -legacy

echo "Extraindo cadeia..."
openssl pkcs12 -in "$arquivo_pfx" \
  -nokeys -cacerts -out chain.pem \
  -passin pass:"$senha" -legacy

echo "Concluído! Arquivos gerados:"
ls -lh cert.pem privkey.pem chain.pem

3. PEM para DER

Converte formato texto para binário.

openssl x509 -in cert.pem -outform DER -out cert.der

4. DER para PEM

Converte formato binário para texto.

openssl x509 -in cert.der -inform DER -out cert.pem

5. Extrair Chave Privada de PEM Combinado

Se você tiver um arquivo PEM com certificado e chave:

openssl pkey -in arquivo_combinado.pem -out privkey.pem

6. Criar Certificado Único PEM (fullchain)

cat cert.pem chain.pem > fullchain.pem

Tabela de Referência Rápida

Boas Práticas e Segurança

1. Proteção de Chaves Privadas

# Definir permissões corretas (apenas leitura para owner)
chmod 400 privkey.pem

# Verificar proprietário
ls -lh privkey.pem
# Deve ser: -r-------- 1 root root

# Nunca commit em Git (adicionar ao .gitignore)
echo "privkey.pem" >> .gitignore
echo "*.pfx" >> .gitignore

2. Backup Seguro

# Criar backup criptografado
tar czf - /etc/letsencrypt/ | \
  openssl enc -aes-256-cbc -salt -out certs_backup.tar.gz.enc

# Restaurar backup
openssl enc -d -aes-256-cbc -in certs_backup.tar.gz.enc | tar xz

3. Validação de Certificados

# Verificar validade
openssl x509 -in cert.pem -text -noout | grep -A2 "Validity"

# Verificar domínios (CN e SAN)
openssl x509 -in cert.pem -text -noout | grep -A1 "Subject:"
openssl x509 -in cert.pem -text -noout | grep "DNS:"

# Verificar emissão e expiração
openssl x509 -in cert.pem -noout -dates

4. Corresponder Chave e Certificado

# Calcular hash da chave privada
openssl pkey -in privkey.pem -pubout -outform pem | \
  openssl dgst -sha256 -hex

# Calcular hash do certificado
openssl x509 -in cert.pem -pubkey -noout | \
  openssl dgst -sha256 -hex

# Se os hashes forem iguais, a chave e certificado combinam

5. Monitoramento de Expiração

#!/bin/bash
# Script para alertar sobre certificados expirando

cert_file="cert.pem"
dias_alerta=30

dias_restantes=$(openssl x509 -in "$cert_file" -noout -dates | \
  grep "notAfter" | cut -d= -f2 | \
  xargs -I {} date -d {} +%s | \
  awk "{print int(($1 - $(date +%s))/86400)}")

if [ "$dias_restantes" -lt "$dias_alerta" ]; then
  echo "ALERTA: Certificado expira em $dias_restantes dias!"
  # Enviar email, Slack, etc.
fi

6. Configuração Nginx com Certificados

server {
  listen 443 ssl http2;
  server_name exemplo.com.br www.exemplo.com.br;

  ssl_certificate /etc/letsencrypt/live/exemplo.com.br/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/exemplo.com.br/privkey.pem;

  # Protocolos seguros
  ssl_protocols TLSv1.2 TLSv1.3;
  ssl_ciphers HIGH:!aNULL:!MD5;
  ssl_prefer_server_ciphers on;

  # HSTS (recomendado)
  add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

  # Seu conteúdo aqui
  root /var/www/html;
  index index.html;
}

# Redirecionar HTTP para HTTPS
server {
  listen 80;
  server_name exemplo.com.br www.exemplo.com.br;
  return 301 https://$server_name$request_uri;
}

7. Configuração Apache com Certificados

<VirtualHost *:443>
  ServerName exemplo.com.br
  ServerAlias www.exemplo.com.br

  SSLEngine on
  SSLCertificateFile /etc/letsencrypt/live/exemplo.com.br/cert.pem
  SSLCertificateKeyFile /etc/letsencrypt/live/exemplo.com.br/privkey.pem
  SSLCertificateChainFile /etc/letsencrypt/live/exemplo.com.br/chain.pem

  # Protocolos seguros
  SSLProtocol -all +TLSv1.2 +TLSv1.3
  SSLCipherSuite HIGH:!aNULL:!MD5

  # HSTS
  Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"

  DocumentRoot /var/www/html
</VirtualHost>

<VirtualHost *:80>
  ServerName exemplo.com.br
  ServerAlias www.exemplo.com.br
  Redirect permanent / https://exemplo.com.br/
</VirtualHost>

Troubleshooting Comum

Erro: "mac verify failure" ao extrair PFX

# Geralmente causado por senha incorreta
openssl pkcs12 -in arquivo.pfx -text -passin pass:suasenha

Solução:

# Tente com -legacy
openssl pkcs12 -in arquivo.pfx -nodes -out temp.pem -legacy

Erro: "Unable to load certificate" no Nginx

# Validar sintaxe
nginx -t

# Verificar permissões
ls -lh /etc/letsencrypt/live/seu-dominio/

# Certificado deve ser legível por nginx
sudo chown root:root /etc/letsencrypt/
sudo chmod 755 /etc/letsencrypt/

Erro: "certificate required" ao usar PFX sem cadeia

# Certificado incompleto, recriar com -certfile
openssl pkcs12 -export \
  -out completo.pfx \
  -inkey privkey.pem \
  -in cert.pem \
  -certfile chain.pem    # Não esquecer este arquivo

IIS Não Reconhece PFX

# Windows requer formato específico
openssl pkcs12 -export \
  -out arquivo.pfx \
  -inkey privkey.pem \
  -in cert.pem \
  -certfile chain.pem \
  -name "Friendly Name"

Certificado Incompatível após Let's Encrypt Update

# Let's Encrypt mudou para ECDSA em 2024
# Se precisar de RSA:
sudo certbot certonly \
  --manual \
  --key-type rsa \
  --rsa-key-size 2048 \
  -d seu-dominio.com.br

Verificar Certificado Instalado em Servidor

# Via SSH (Linux)
echo | openssl s_client -servername exemplo.com.br -connect exemplo.com.br:443 2>/dev/null | \
  openssl x509 -noout -dates -subject

# Via CLI (qualquer SO)
openssl s_client -connect exemplo.com.br:443 -showcerts < /dev/null

Conclusão

Certificados SSL/TLS são fundamentais para segurança moderna. Este guia cobriu:

✅ Geração via Let's Encrypt e Certbot
✅ Conversão entre formatos PEM, PFX, DER
✅ Boas práticas de segurança e proteção
✅ Troubleshooting de problemas comuns

Próximos Passos

  1. Revise suas políticas de backup e rotação de certificados

  2. Implemente monitoramento de expiração

  3. Configure HSTS e outras headers de segurança

  4. Teste renovação automática regularmente

  5. Mantenha registros de auditoria de mudanças

Recursos Adicionais

  • Let's Encrypt Documentation

  • Certbot Documentation

  • SSL Labs Best Practices

  • Mozilla SSL Configuration Generator

Dúvidas ou sugestões? Deixe um comentário abaixo ou entre em contato com nosso time de infraestrutura.

Última atualização: Agosto de 2026

Compartilhar

Continuar a ler

Leia também

  • iSCSI no TrueNAS: Guia Completo de Configuração e Gerenciamento

    iSCSI no TrueNAS: Guia Completo de Configuração e Gerenciamento

    25 de agosto de 202613 min de leitura
  • StorCLI - Cheat Sheet Completo

    StorCLI - Cheat Sheet Completo

    11 de agosto de 202612 min de leitura
  • Corrupção de filesystem em servidores críticos: como diagnosticar antes de sair reparando
    Tutoriais

    Corrupção de filesystem em servidores críticos: como diagnosticar antes de sair reparando

    Saiba por que o primeiro passo não é o reparo, mas a saúde do disco: como o SMART, o histórico de shutdowns e o dry-run do xfs_repair separam um incidente resolvido de um desastre de dados.

    16 de julho de 20266 min de leitura

Comentários

Ainda sem comentários

Seja o primeiro a compartilhar sua opinião sobre este artigo.

Deixe um comentário

Newsletter

Receba novos artigos

Inscreva-se para receber publicações do blog Nyverra no seu e-mail. Enviaremos um link de confirmação.

​
  1. Início
  2. Tutoriais
  3. Certificados SSL/TLS: Guia Completo de Geração e Conversão entre Formatos
TutoriaisSegurança
#OpenSSL#Renovação de Certificados#Conversão de Certificados#Certificados SSL#Administração de Sistemas#Let's Encrypt

Certificados SSL/TLS: Guia Completo de Geração e Conversão entre Formatos

Wedson LopesWedson Lopes
14 de agosto de 20269 min de leitura