O Que e X.509?

X.509 e o padrao do ITU-T para certificados de chave publica - usado em TLS/SSL (HTTPS), S/MIME (e-mail assinado), code signing, EAP-TLS (Wi-Fi corporativo), client authentication, ICP-Brasil e dezenas de outros cenarios. Um certificado X.509 associa uma chave publica a uma identidade (dominio, CPF, organizacao) atraves da assinatura de uma Autoridade Certificadora (CA) em quem voce ja confia.

A estrutura interna e ASN.1 codificada em DER - um formato binario hierarquico. PEM e apenas DER em Base64 com cabecalhos -----BEGIN CERTIFICATE----- para ser texto-amigavel. Os campos principais de um X.509 v3:

Campos Principais

  • Subject - identidade do dono do certificado (CN, O, OU, C, etc.)
  • Issuer - identidade da CA que assinou
  • Serial Number - identificador unico atribuido pela CA (importante para revogacao)
  • Validity - notBefore / notAfter
  • Signature Algorithm - algoritmo usado pela CA (ex: sha256WithRSAEncryption)
  • Subject Public Key Info - a chave publica e seu algoritmo (RSA-2048, P-256, Ed25519, etc.)

Extensoes Importantes (X.509 v3)

  • Subject Alternative Name (SAN) - DNS names, IPs, URIs, e-mails para os quais o cert e valido. Desde 2017, navegadores so olham SAN, nao CN.
  • Basic Constraints - CA:TRUE/FALSE e pathLenConstraint. Diz se o cert pode emitir outros certs.
  • Key Usage - finalidades da chave: digitalSignature, keyEncipherment, keyCertSign, etc.
  • Extended Key Usage - finalidades especificas: serverAuth (TLS server), clientAuth (mTLS), codeSigning, etc.
  • Subject Key Identifier (SKI) - hash da chave publica, usado para encadeamento.
  • Authority Key Identifier (AKI) - SKI da CA que assinou. Liga este cert ao cert da CA.
  • Authority Information Access (AIA) - URL para baixar o cert da CA (caIssuers) e URL do responder OCSP.
  • CRL Distribution Points (CDP) - URLs onde baixar listas de revogacao.
  • Certificate Transparency (SCT) - timestamps assinados de logs CT. Obrigatorio em certs publicos modernos.

Checks de Lint que o Parser Aplica

  • Expirado ou perto de expirar - alerta com 90/60/30/0 dias restantes
  • Algoritmo de assinatura fraco - SHA-1 e MD5 sao rejeitados em TLS publico ha anos
  • Chave RSA < 2048 bits - inseguro pelos padroes atuais (NIST recomenda ≥2048)
  • SAN ausente - cert TLS publico precisa de SAN, nao basta CN
  • End-entity com CA:TRUE - falha grave, equivale a permitir emissao arbitraria
  • Validade > 398 dias - desde set/2020 navegadores rejeitam TLS publico com validade maior
  • Sem extendedKeyUsage para serverAuth - cert que claramente e de servidor mas nao declara o EKU

Perguntas Frequentes

O que e um certificado X.509?

X.509 e o padrao de certificado digital usado em TLS, S/MIME e code signing. Associa uma chave publica a uma identidade atraves da assinatura de uma CA.

PEM vs DER, qual usar?

DER e binario, PEM e DER em Base64 com cabecalhos. Para configurar Apache/Nginx/HAProxy o padrao e PEM. Para clientes Windows/Java geralmente DER. Esta ferramenta aceita ambos.

O que e SAN?

SAN lista todos os hostnames/IPs/URIs para os quais o certificado e valido. Desde 2017 navegadores so olham SAN - CN do subject e ignorado.

O que e BasicConstraints CA:TRUE?

CA:TRUE indica que o certificado pode assinar outros certificados (CA intermediaria ou raiz). End-entity sempre deve ter CA:FALSE.

Por que algumas extensoes aparecem como nao reconhecidas?

X.509 e extensivel - varios OIDs sao especificos de uma CA, de Certificate Transparency, EV ou ICP-Brasil. Cobrimos as mais relevantes; outros sao mostrados por OID numerico.

Os certificados sao enviados a algum servidor?

Nao. Tudo roda no navegador via JavaScript e WebCrypto. Nada sai do seu cliente - voce pode analisar certificados privados com seguranca.

Sua empresa precisa de governanca de certificados?

PKI, gestao de certificados e mTLS sob medida

Implementamos PKI corporativa (CA propria), inventario e renovacao automatica de certs publicos, mTLS para APIs internas e validacao de cadeia em ambientes complexos.

Solicitar Proposta