Se você tem um entendimento sólido do que é um certificado X509, por favor, levante a mão. Agora que reconhecemos que ninguém está levantando a mão, vamos mudar isso.
Certificados são um tópico complexo e frequentemente mal compreendidos. Este tutorial tem como objetivo mudar isso, mostrando exemplos de certificados X509, demonstrando certificados de PKI e muito mais.
Neste artigo, você terá uma boa visão geral dos certificados X509. No final, você entenderá como eles funcionam em um nível mais alto. Você não se tornará um especialista em um único artigo, mas pelo menos estará familiarizado com a terminologia adequada até o final deste artigo.
Relacionado: Gerenciando Certificados com o Windows Certificate Manager e PowerShell
Chaves Públicas e Privadas: Protegendo Ativos
Qualquer informação que explique certificados X509 seria incompleta sem mencionar primeiro as chaves. Você pode ter ouvido falar do conceito de chaves quando termos como privadas e públicas são mencionados. Mas o que exatamente é uma chave e como ela se relaciona com certificados?
Para facilitar a conexão, vamos explicar o conceito de chaves em termos de uma fechadura de porta convencional.
Quando você compra uma nova fechadura de porta, ela vem com uma chave. Essa chave é única para aquela fechadura, de modo que mais ninguém conseguirá abri-la.
Pense na própria fechadura como uma chave pública. Quando instalada, você, sua família ou transeuntes podem ver a fechadura na sua porta. Qualquer um é livre para ver e até tentar desbloqueá-la, mas não terão sucesso. Para desbloqueá-la, precisariam inserir a chave única da porta que veio originalmente com a fechadura. A chave única que veio com a fechadura é a chave privada.
A chave privada e a pública juntas são referidas como um par de chaves.
Troca de Chaves
Quando a chave da porta é inserida na fechadura, você pode pensar nessa ação como troca de chaves. A chave privada (chave da porta) precisa ser trocada pela chave pública (fechadura) para abrir a porta.
No mundo da criptografia, você livremente disponibiliza uma chave pública e mantém a chave privada para si mesmo. Afinal, você não se importa quem vê a fechadura, mas definitivamente se importa com quem pode desbloqueá-la (trocando chaves).
Existem algumas maneiras diferentes de trocar chaves chamadas algoritmos de troca de chaves. Os algoritmos de troca de chaves focam em derivar e transmitir de forma segura um segredo compartilhado único.
Dois algoritmos populares de troca de chaves que você pode ter ouvido falar são Diffie-Hellman (DH) e Elliptic Curve Diffie-Hellman (ECDH).
Confiança na Chave
Se você precisar que alguém entre pela porta, você daria a eles a chave (ou uma cópia da chave original e única). Você só dá sua chave para aqueles em quem você confia. A pessoa que possui a chave privada (chave da porta) foi confiada para desbloquear a fechadura da porta (chave pública).
Uso da Chave
As chaves de uso definem o propósito do certificado X509, alinhando-se com os algoritmos que o certificado utilizará. O uso estendido da chave (EKU) define os propósitos pretendidos para a chave pública além do uso da chave.
Certificados X509: Chaves Públicas “Containers”
Como as chaves privadas e públicas se relacionam com o conceito de um certificado X509? Pense em um certificado simplesmente como uma chave pública. Um certificado é o “invólucro” que contém uma chave pública juntamente com algumas outras informações sobre a chave, como para quem a chave pública foi emitida, quem assinou a chave, entre outros. Certificados são armazenados na forma de arquivos.
Vamos abordar alguns bons exemplos de certificados X509 mais tarde.
Você já viu um arquivo com uma extensão de arquivo de certificado PEM ou CER? Esses são certificados (chaves públicas). Você aprenderá mais sobre esses formatos um pouco mais tarde.
A chave pública por si só não é necessariamente um certificado por definição. É a chave pública e os dados de atributo associados combinados que definem um certificado.
A certificate provides a standardized and secure format to communicate with specific systems along with the attributes to help validate a key pair trust. How certificates are built are defined within the X.509 standards, as you will read about later.
Thumbprint: Identificador Único do Certificado
Cada certificado X509 destina-se a fornecer a identificação de um único sujeito. O certificado deve garantir que cada chave pública seja unicamente identificável.
A certificate thumbprint or fingerprint is a way to identify a certificate, that is shorter than the entire public key. Technically, a serial number is as well but you’ll learn about that when it comes to certification authorities (CAs). The thumbprint is a hash of a DER-encoded certificate in Windows.
O conceito de identificar um conjunto de dados maior por um identificador único menor é o tópico geral de computação de impressões digitais. O blog de Morgan Simonson mergulha mais fundo na impressão digital.
Assunto: Definindo Atributos Importantes de Certificados X509
Cada certificado X509 precisa não apenas ter um identificador único, mas também responder a perguntas como as abaixo. O assunto do certificado deve fazer exatamente isso.
- Quem deve utilizar este certificado?
- Qual organização deve ser confiável?
- Qual usuário deve apresentar este certificado?
O assunto é, sem dúvida, a parte mais importante de um certificado. O assunto destina-se a ter atributos, definidos pelo X.500, que representam quem ou o que o certificado é emitido. É representado em um formato de nome distinto (DN).
A certificate subject is a string value that has a corresponding attribute type. For example, the DN for State or Province is st. This attribute type contains the full name of the state or province the subject resides in (e.g. ST=California).
Esses tipos de atributos e formatos de valor são definidos pelas recomendações do ITU-T X.520. Uma referência adicional é o RFC 4519 para recomendações específicas de tipos de atributos e formatos de valor.
Como os padrões de certificados X509 não são regras, apenas sugestões fortes, muitas pessoas usam seu próprio julgamento ao definir um assunto. O assunto deve identificar especificamente a entidade final em que você confia. Se o assunto não representar isso, como você pode confiar em qualquer coisa usando a chave pública apresentada?
De outra forma, se permitir que várias pessoas usem o mesmo nome de usuário para acessar um sistema, você não pode responsabilizar nenhuma pessoa específica por suas ações. Essa prática complica o modelo de confiança que os certificados devem seguir.
Você pode ver um exemplo de como o Windows representa um certificado X509 e, mais especificamente, o assunto do certificado na captura de tela abaixo.

Visualizando os atributos de um certificado com o Cryptext.dll.
Nome Alternativo do Assunto (SAN)
A SAN is a certificate extension that allows you to use one certificate for multiple subjects that’s typically identified with a Subject Key Identifier (SKI). The example below shows some of the SANs Google uses. Adding more domains to a certificate essentially tells the certificate to trust each subject to use the same private key.
A SAN can also have several types other than DNS names called GeneralNames. GeneralNames require the client reading the certificate to support SANs using GeneralNames. Most clients such as web browsers only focus on the DNS name SAN.
Você pode ver o SAN abaixo neste exemplo de certificado X509.

Alguns dos atributos do SAN associados ao certificado do Google.
Compreendendo a Codificação
Nós usamos muitos idiomas para nos comunicarmos, da mesma forma, os computadores têm sua própria linguagem. Essa linguagem é binária, e diferentes métodos de codificação são como tornamos o binário mais utilizável para os outros, assim como traduzimos o inglês para outros idiomas.
A codificação serve a um propósito específico. Ela permite que os valores legíveis por humanos sejam armazenados de maneira que os computadores também possam usá-los. Os formatos de codificação facilitam o armazenamento e a transferência de certificados X509, mas também nos permitem ler seus conteúdos.
Os computadores são bons em lidar com inteiros; a codificação permite converter valores numéricos em valores alfanuméricos ou até mesmo em blocos binários. Essa conversão é fundamental para trabalhar com computadores, e os certificados dependem da codificação para transmitir corretamente as informações apropriadas aos computadores. Os formatos de codificação definem os padrões para realizar essas conversões.
- ASN.1 – O padrão de Notação de Sintaxe Abstrata é o formato de serialização para cada um dos campos dentro dos certificados.
- ASCII – O Código Padrão Americano para Troca de Informação (ASCII) define um valor binário para cada um dos caracteres de controle de computador e caracteres imprimíveis usados na maioria das comunicações legíveis por humanos.
- Base64 – Base64 define um esquema para codificar conteúdo binário dentro do conjunto de caracteres ASCII. Estes são os certificados que você pode abrir em um editor de texto e ver “INICIAR CERTIFICADO” ou outro texto de referência.
- DER – Regras de Codificação Distintas (DER) define outro esquema de codificação especificamente para dados ASN.1 como octetos sequenciais. A consideração importante com DER é que a saída codificada não é visível como ASCII.
Você pode ver abaixo a diferença nos esquemas de codificação. Observe que o arquivo certificate.crt exibido primeiro tem um ——-INICIAR CERTIFICADO——-
, seguido por uma série de letras e números aleatórios e termina com ——-FIM DO CERTIFICADO——-
. Todos os caracteres são legíveis. O primeiro certificado é codificado em Base64.
Agora, dê uma olhada no segundo exemplo do arquivo certificate.cer. O conteúdo deste arquivo parece muito diferente do certificado Base64. Este certificado X509 é codificado em DER.

Diferença entre arquivos codificados em Base64 e DER.
Compreensão dos Tipos de Arquivos de Certificado X509
Lembre-se de que um certificado é apenas uma chave pública com metadados representados como um arquivo. Você encontrará muitos tipos diferentes de arquivos representando diferentes tipos de certificados. Cada tipo de arquivo é diferenciado por sua extensão de arquivo. Quando nos referimos a um arquivo KEY, por exemplo, estamos nos referindo à sua extensão de arquivo.
Abaixo você encontrará todos os tipos comuns de certificados definidos por sua extensão de arquivo com os quais você pode trabalhar e seu propósito.
Na lista abaixo, você notará várias referências ao PKCS. PKCS ou Public Key Cryptography Standards é um conjunto de padrões para definir como vários certificados são criados. Para obter mais informações, confira este informativo artigo da Wikipedia.
- PFX – Esses são os mais comumente encontrados em um ambiente Windows, mas é um formato padrão independentemente do sistema operacional. Os arquivos PFX contêm um certificado, a chave pública e extensões, e uma chave privada criptografada com uma senha. PFX é definido pelo padrão PKCS #12.
- P12 – Assim como o PFX, o P12 é definido pelo padrão PKCS #12. Formalmente, o PKCS #12 é o sucessor do formato PFX, embora ambos os tipos de arquivo representem o mesmo formato em implementações criptográficas modernas.
- P7B – Um contêiner de certificados ASN.1, especificamente chaves públicas para todas as camadas de uma cadeia de autoridade de certificação, como você aprenderá abaixo. Um arquivo PKCS #7 fornece um único arquivo para distribuir várias chaves públicas, frequentemente usado para configurar manualmente uma confiança com CAs em uma PKI privada.
- P7C – O tipo de arquivo P7C é funcionalmente o mesmo que P7B, mas é simplesmente outra extensão comum usada para representar um arquivo PKCS #7.
- DER – Um arquivo DER é uma chave pública codificada em DER.
- CER – Uma chave pública é codificada em DER ou Base64. Um arquivo CER é normalmente codificado em DER.
- CRT – Um CRT é normalmente codificado em Base64, mas não há garantias.
- KEY – Um arquivo KEY geralmente é uma chave privada codificada em Base64, seja ela criptografada ou não.
- PEM – Uma referência a um certificado codificado em Base64, embora várias chaves possam estar em um único arquivo PEM, frequentemente há a suposição de que o arquivo PEM contém uma chave privada. Mais comumente usado para um arquivo PEM de chave privada codificado em Base64 – seja criptografado ou não criptografado.
- CSR – Usado para enviar uma chave pública a uma AC para ser assinada e emitida com campos adicionais, como um número de série, sendo definido pelo PKCS #10. Na maioria dos casos, um CSR conterá a estrutura ASN.1 para a solicitação codificada em Base64.
- REQ – Usado no Windows para especificar as configurações da política de inscrição usadas ao gerar o CSR.
- CRL – Uma CRL é um arquivo específico listando os certificados revogados por uma AC, seu estado de revogação e o motivo da revogação.
Infraestrutura de Chave Pública (PKI): O Ecossistema de Certificados X509
Lembre-se de quando alguém segurava a chave da fechadura de uma porta. Naquela ocasião, você tinha apenas uma porta. Mas o que acontece quando de repente você se torna o proprietário de dezenas ou centenas de apartamentos? Gerenciar todas essas chaves de porta vai ficar complicado!
Além disso, os inquilinos não vão ficar no apartamento para sempre. Haverá pessoas que vão guardar a chave ou fazer cópias não autorizadas. Você vai precisar trocar as fechaduras para impedir o acesso. Você não confia mais nos antigos inquilinos.
Se você precisa gerenciar centenas de apartamentos com inquilinos entrando e saindo constantemente, como você faz isso? A resposta é uma Infraestrutura de Chave Pública (PKI).
PKI é um ecossistema completo de funções, políticas e procedimentos construídos em torno da gestão de chaves públicas. A PKI representa um conjunto abrangente de muitas áreas diferentes de foco para distribuir, usar, gerenciar e remover certificados X509. É essencialmente tudo o que é necessário para lidar e gerenciar certificados em grande escala.
Nas próximas seções, vamos analisar muitos dos componentes mais comuns de uma PKI e explicar o papel de cada componente.
Autoridades de Certificação (AC): Seus Pais
A PKI is primarily built around the concept of managing trust. But since it’s not economical to directly manage hundreds or thousands of trust relationships, you need a mediator.
Você precisa de uma terceira parte que já tenha sido garantida pela parte original. Esses mediadores de terceiros são chamados de autoridades de certificação (ACs) identificadas por uma extensão de Identificadores de Chave de Autoridade (AKI) derivada da chave pública usada para assinar o certificado fornecido.
Pense em você como uma criança como um certificado X509. Provavelmente, você foi ensinado pelos seus pais a não confiar em estranhos. Mas e se seus pais (aqueles em quem você confia) te apresentarem a um estranho e disserem que é seguro confiar nele? Provavelmente, você seguiria em frente e confiaria no estranho. Afinal, se seus pais confiam nele, você também pode confiar.
A CA plays the role of your parents. You trust your parents (a CA) and they introduce you to strangers. They do so by signing the stranger’s public key to let you know that you can trust them.
O papel principal de uma Autoridade Certificadora (AC) é atuar como um mediador confiável.
Emissão de Certificados X509: Estabelecendo Confiança
Ao ser uma entidade confiável conhecida, uma AC possibilita a confiança entre partes indiretas. Para habilitar a confiança entre as partes, uma AC “emite” certificados. Quando falamos em emissão por uma AC, na verdade estamos nos referindo à validação das extensões solicitadas e à adição de extensões geradas pela AC para criar um certificado.
Quando uma AC emite um certificado X509, ela utiliza sua própria chave privada para assinar digitalmente a chave pública do certificado. Através do processo de assinatura, a AC está marcando o certificado de uma forma que informa a todos que ela confia nessa chave pública. O DocuSign fornece uma boa visão geral desse conceito específico com um bom diagrama.
Outro exemplo de extensão gerada pela AC é o número serial para cada certificado, e cada número serial precisa ser único para aquela AC de acordo com as especificações de design do RFC.
Um exemplo de confiança não intencional nas notícias modernas é o uso malicioso de PKIs com malware. Onde os criadores recebem certificados válidos que são implicitamente confiados pela maioria dos sistemas, tornando mais difícil para seus sistemas identificar os binários de malware como maliciosos.
Revogando Certificados X509: Removendo Confiança
A AC também é responsável por revogar certificados X509 que não devem mais ser confiados. Essas revogações são publicadas pela AC em uma Lista de Revogação de Certificados (CRL). A revogação é uma maneira para as ACs invalidarem ativamente um certificado, em vez de esperar que a duração de validade expire.
A confiança é um componente crítico para os certificados funcionarem da maneira como são projetados. Pontos de distribuição auxiliam na garantia da confiança, fornecendo um ponto de referência onde o certificado e as listas de revogação podem ser baixados do emissor e usados para comparar com o certificado que você está usando.
A CRL Distribution Point (CDP) supplies the protocols and locations to obtain CRLs. Updating CRLs is a passive revocation validation method, with pulling updates at scheduled intervals. Online Certificate Status Protocol (OCSP) actively requests the revocation status of a specific certificate by maintaining caches of the CRLs.
Embora a validação de revogação por meio de CRLs ou OCSP esteja disponível, ela é implementada conforme a necessidade de suporte e imposição do cliente, e nem sempre é o caso.
Estratificação
A PKI can be made up of multiple CAs or a single CA, these are commonly referred to as tiers.
Encadeamento de Certificados X509
Como você aprendeu acima, a confiança é um ponto focal importante ao usar certificados. As partes envolvidas devem ser capazes de confiar ou validar um certificado que foi emitido por uma AC confiável.
A great example of how this scales is the The United States Federal PKI public documents. These provide a great reference into maintaining an inter-organization trust relationship using CAs.
Assinatura de Certificado X509
Você frequentemente ouvirá falar de um conceito chamado assinatura de certificado, mas o que exatamente isso significa? Como você já aprendeu, os certificados são uma questão de confiança. Para estabelecer confiança, um certificado X509 é assinado por uma CA. Assinar um certificado atribui um hash criptográfico único a um certificado, informando a todas as partes que o leem que elas podem confiar nele. Ele foi assinado por uma CA confiável.
Em uma hierarquia de PKI, os certificados são assinados por CAs, mas onde esses certificados são usados depende do tipo de CA que os assina.
Quando há uma única CA em uma PKI, essa CA é a raiz. Como nenhuma outra CA existe, essa CA precisa gerar seu próprio certificado autoassinado. Essa CA então emite certificados assinados por seu próprio certificado.
Se uma PKI tiver mais de uma CA, todas as CAs são assinadas por uma CA raiz ou uma CA intermediária que está vinculada à CA raiz.
Geralmente, quando um dispositivo usa a mesma chave privada correspondente à chave pública ao gerar um certificado X509, isso é conhecido como um certificado autoassinado. No entanto, você também pode solicitar que uma CA use sua própria chave privada para assinar seu certificado.
Algoritmos de Assinatura
Os algoritmos de assinatura focam em validar a autenticidade de uma mensagem de um par remoto. Uma assinatura digital é uma soma de verificação de uma função de hash criptográfica criptografada com a chave privada do remetente. O destinatário descriptografa a assinatura digital usando uma cópia da chave pública do remetente. O destinatário pode então comparar a soma de verificação da mensagem recebida com a que foi descriptografada da assinatura digital. Quando as somas de verificação correspondem, a autenticidade da mensagem é válida.
A criptografia assimétrica é a capacidade de gerar texto cifrado sem o uso de um segredo previamente conhecido. A combinação de um algoritmo de troca de chaves com um algoritmo de assinatura é a base da criptografia assimétrica.
Abaixo estão os principais algoritmos usados para assinaturas digitais.
- Rivest–Shamir–Adleman (RSA)
- Algoritmo de Assinatura Digital (DSA)
- DSA de Curva Elíptica (ECDSA)
Solicitações de Assinatura de Certificado (CSRs)
As Autoridades Certificadoras utilizam Solicitações de Assinatura de Certificado (CSR) que permitem que os clientes enviem chaves públicas para as Autoridades Certificadoras para emissão. Uma Autoridade Certificadora aceita uma CSR e emitirá certificados X509 assinados com base nas políticas de emissão configuradas. Isso significa que cada AC em que você confia também implica confiança nas chaves públicas que ela assina.
Hashing
O hashing é um tópico complexo, e nem mesmo tentarei fazê-lo justiça neste post. A equipe do Computerphile tem uma boa visão geral em seu canal no YouTube. O hashing concentra-se em pegar um objeto de entrada e criar um hash de saída único para essa entrada única. O hash de saída é conhecido como digest. Significando que mudar o objeto de entrada de qualquer maneira mínima, criará um digesto diferente e não relacionado.
Implementações modernas se concentrarão nos algoritmos do Secure Hash Algorithm (SHA) 2. Como observação, SHA 256, SHA 384 e SHA 512 são conhecidos como SHA 2.
Abaixo está uma lista de algoritmos de hashing comuns que você verá.
- SHA 256
- SHA 384
- SHA 512
- Digest de Mensagem (MD) 5
Políticas de Certificado
A extensão de política de certificado (CP) fornece a referência à organização que mantém a AC, documentando suas políticas reais para a PKI fornecida e deve estar alinhada como um Documento de Práticas de Certificação (CPS) fornecendo a política da organização para manter a PKI fornecida.
Pontos de Distribuição
Outro tipo de ponto de distribuição identificado nos certificados são os AIA (Authority Information Access). Esses AIA fornecem os protocolos e locais para obter cópias das informações dos emissores de certificados, geralmente isso significa a chave pública da AC emissora.
Resumo
Espero que agora, quando alguém lhe fizer uma pergunta como no início deste artigo, você se sinta mais confortável em levantar a mão, devagar. Em toda honestidade, espero que este artigo tenha ajudado você a ver as complexidades dos certificados X509 e a implementação desses padrões no Windows. Ao mesmo tempo, ajudou você a entender alguns dos componentes básicos que o ajudarão no futuro ao trabalhar com certificados.
Pelo menos agora, quando alguém solicitar a chave pública do seu certificado, você poderá confirmar que eles querem DER ou Base64 codificado, e eles não saberão, então você ainda enviará ambos.