Todos os artigos sobre SSL SSL e certificados

Guia Rápido de Comandos OpenSSL para Certificados SSL

O OpenSSL e o canivete suico para certificados SSL/TLS. Todos os outros artigos neste site fazem referencia a comandos OpenSSL — esta página reune todos em um só lugar.

Verificar um certificado

Ver detalhes do certificado (servidor remoto)

echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -noout -text

Verificar data de expiração

echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -noout -enddate

Verificar subject e SANs

echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -noout -subject -ext subjectAltName

Verificar emissor (qual CA)

echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -noout -issuer

Verificar um arquivo de certificado local

openssl x509 -in cert.pem -noout -text
openssl x509 -in cert.pem -noout -dates          # Apenas as datas
openssl x509 -in cert.pem -noout -subject         # Apenas o subject
openssl x509 -in cert.pem -noout -ext subjectAltName  # Apenas os SANs

Verificar a cadeia de certificados

Verificar completude da cadeia (remoto)

echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null
# Procure por:
#   Verify return code: 0 (ok)          ← Cadeia esta completa
#   Verify return code: 21 (unable to verify) ← Cadeia esta incompleta

Verificar um certificado contra um arquivo de cadeia

openssl verify -CAfile chain.pem cert.pem
# Esperado: cert.pem: OK

Verificar se certificado e chave correspondem

# Esses dois hashes devem ser identicos
openssl x509 -noout -modulus -in cert.pem | openssl md5
openssl rsa -noout -modulus -in privkey.pem | openssl md5
# Para chaves ECDSA:
openssl ec -in privkey.pem -pubout 2>/dev/null | openssl md5
openssl x509 -in cert.pem -pubkey -noout | openssl md5

Gerar chaves

ECDSA P-256 (recomendado)

openssl ecparam -genkey -name prime256v1 -noout -out privkey.pem

RSA 2048

openssl genrsa -out privkey.pem 2048

RSA 4096

openssl genrsa -out privkey.pem 4096

Gerar um CSR

ECDSA

openssl req -new -key privkey.pem -out csr.pem -subj "/CN=example.com"

Com SANs (multi-domínio)

openssl req -new -key privkey.pem -out csr.pem \
  -subj "/CN=example.com" \
  -addext "subjectAltName=DNS:example.com,DNS:www.example.com"

Inspecionar um CSR

openssl req -in csr.pem -noout -text

O que é um CSR? →

Converter entre formatos

PEM → PFX (para Windows/IIS)

openssl pkcs12 -export -out cert.pfx -inkey privkey.pem -in cert.pem -certfile chain.pem

PFX → PEM

openssl pkcs12 -in cert.pfx -clcerts -nokeys -out cert.pem
openssl pkcs12 -in cert.pfx -nocerts -nodes -out privkey.pem
openssl pkcs12 -in cert.pfx -cacerts -nokeys -out chain.pem

PEM → DER

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

DER → PEM

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

Formatos de certificado explicados →

Depurar conexões TLS

Testar qual versão TLS e negociada

echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | grep "Protocol"

Testar uma versão TLS especifica

# Testar TLS 1.2
echo | openssl s_client -connect example.com:443 -servername example.com -tls1_2 2>/dev/null | grep "Protocol"

# Testar TLS 1.3
echo | openssl s_client -connect example.com:443 -servername example.com -tls1_3 2>/dev/null | grep "Protocol"

Mostrar o handshake completo

openssl s_client -connect example.com:443 -servername example.com -msg

Verificar cipher suites suportadas

# Listar todos os ciphers que o servidor aceita
nmap --script ssl-enum-ciphers -p 443 example.com

Gerar um certificado auto-assinado (apenas para desenvolvimento)

openssl req -x509 -newkey ec -pkeyopt ec_paramgen_curve:P-256 \
  -keyout key.pem -out cert.pem -days 365 -nodes \
  -subj "/CN=localhost" \
  -addext "subjectAltName=DNS:localhost,IP:127.0.0.1"

Para HTTPS localhost confiavel, use mkcert em vez disso.

Criar fullchain.pem a partir de arquivos separados

cat cert.pem chain.pem > fullchain.pem

A ordem importa: seu certificado primeiro, depois o(s) intermediário(s).

Perguntas frequentes

Como instalo o OpenSSL?

A maioria das distribuicoes Linux já o inclui. No macOS: brew install openssl. No Windows: instale via Git for Windows (inclui OpenSSL) ou Chocolatey (choco install openssl).

Qual a diferenca entre openssl x509 e openssl s_client?

x509 le um arquivo de certificado local. s_client conecta-se a um servidor remoto e recupera seu certificado. Use s_client para verificar um servidor em producao; use x509 para inspecionar um arquivo em disco.

Por que meus comandos mostram “unable to load certificate”?

O arquivo provavelmente esta codificado em DER (binario), não em PEM (texto). Adicione -inform DER ao comando:

openssl x509 -in cert.der -inform DER -noout -text

Artigos relacionados

Implantacao 2026-05-07
Como Verificar a Expiração do Certificado SSL
Verifique quando seu certificado SSL expira usando o navegador, OpenSSL ou ferramentas online. Configure monitoramento para evitar expiração inesperada e tempo de inatividade.
SSL e certificados 2026-05-07
Formatos de Certificado SSL: PEM, PFX, DER Explicados
Entenda os formatos de certificado PEM, PFX/PKCS#12 e DER. Saiba qual formato seu servidor precisa e como converter entre eles com OpenSSL.
SSL e certificados 2026-05-07
Cadeia de Confiança de Certificados Explicada
Como os navegadores verificam certificados SSL através de uma cadeia da CA raiz à CA intermediária até o seu certificado. Saiba por que a ordem da cadeia importa e como corrigir erros de 'certificado não confiável'.
SSL e certificados 2026-05-07
Certificados ECC vs RSA: Qual Você Deve Escolher?
Compare certificados ECC (ECDSA P-256) e RSA (2048/4096-bit). As chaves ECC são menores e mais rápidas. Saiba por que o GetHTTPS usa ECC por padrão e quando RSA ainda faz sentido.
Obtenha um certificado SSL gratuito no seu navegador
Sem instalacao, sem conta. Sua chave privada nunca sai do seu dispositivo.
Obter seu certificado