Geração de Certificados X.509 em Criptografia

LinuxBeginner
Pratique Agora

Introdução

Neste laboratório, você explorará os aspectos práticos da criação e gerenciamento de certificados X.509, um pilar da segurança digital moderna. Certificados X.509 são documentos digitais que vinculam uma chave pública a uma identidade, como uma pessoa ou um servidor, e são fundamentais para protocolos como TLS/SSL para proteger o tráfego web.

Usando a poderosa ferramenta de linha de comando openssl, você aprenderá a realizar tarefas essenciais de gerenciamento de certificados. Você começará entendendo a estrutura de um certificado e, em seguida, criará um certificado autoassinado (self-signed) para fins de desenvolvimento. Depois disso, você gerará uma Solicitação de Assinatura de Certificado (CSR - Certificate Signing Request) e atuará como uma Autoridade Certificadora (CA) simples para assiná-la, produzindo um certificado confiável dentro do seu próprio sistema.

Ao final deste laboratório, você terá uma compreensão sólida e prática do ciclo de vida dos certificados.

Este é um Lab Guiado, que fornece instruções passo a passo para ajudá-lo a aprender e praticar. Siga as instruções cuidadosamente para completar cada etapa e ganhar experiência prática. Dados históricos mostram que este é um laboratório de nível iniciante com uma taxa de conclusão de 100%. Recebeu uma taxa de avaliações positivas de 100% dos estudantes.

Visão Geral dos Certificados X.509

Nesta etapa, abordaremos a teoria básica por trás dos certificados X.509. Não há comandos para executar aqui; esta seção é para sua compreensão antes de começarmos as tarefas práticas.

Um certificado X.509 é um documento digital padronizado que contém informações cruciais para estabelecer confiança. Seus componentes principais incluem:

  • Assunto (Subject): A identidade do titular do certificado (por exemplo, uma pessoa, um nome de servidor como www.example.com).
  • Emissor (Issuer): A entidade que verificou a identidade e assinou o certificado (a Autoridade Certificadora ou CA).
  • Chave Pública (Public Key): A chave pública correspondente à chave privada do assunto.
  • Período de Validade (Validity Period): As datas (Not Before e Not After) durante as quais o certificado é válido.
  • Assinatura (Signature): A assinatura digital do emissor, que garante a autenticidade do certificado.

Um certificado autoassinado (self-signed certificate) é um tipo especial de certificado onde o emissor e o assunto são os mesmos. Essencialmente, o certificado assina a si mesmo. Embora esses certificados não sejam confiáveis por navegadores ou sistemas públicos (porque não são verificados por uma CA conhecida), eles são extremamente úteis para testes internos, ambientes de desenvolvimento ou redes privadas onde você controla tanto o cliente quanto o servidor.

Na próxima etapa, você criará seu próprio certificado autoassinado.

Criar um Certificado Autoassinado

Nesta etapa, você criará um certificado autoassinado. Uma chave privada chamada private.pem já foi gerada para você no diretório ~/project para simplificar o processo. Você usará esta chave para gerar um certificado.

O comando openssl req é usado para criar e processar solicitações de certificado. Vamos detalhar as flags que usaremos:

  • -new: Gera uma nova solicitação de certificado.
  • -x509: Gera um certificado autoassinado em vez de uma solicitação de certificado.
  • -key private.pem: Especifica a chave privada a ser usada.
  • -out cert.pem: Especifica o nome do arquivo de saída para o certificado.
  • -days 365: Define a validade do certificado para 365 dias.
  • -subj "...": Fornece as informações do assunto de forma não interativa.

Agora, execute o seguinte comando no seu terminal para criar o certificado:

openssl req -new -x509 -key private.pem -out cert.pem -days 365 -subj "/C=US/ST=California/L=Mountain View/O=MyOrg/CN=example.com"

Este comando não produzirá nenhuma saída, mas criará um novo arquivo. Você pode verificar se o arquivo cert.pem foi criado listando os arquivos no diretório atual:

ls

Você deverá ver cert.pem na saída, juntamente com os arquivos pré-gerados.

ca-key.pem  ca.pem  cert.pem  private.pem

Visualizar Detalhes do Certificado

Nesta etapa, você inspecionará o conteúdo do certificado autoassinado que acabou de criar. Isso permite verificar seus detalhes e entender sua estrutura em um formato legível por humanos.

Usaremos o comando openssl x509, que é projetado para visualizar e manipular arquivos de certificado.

  • -in cert.pem: Especifica o arquivo de certificado de entrada.
  • -text: Imprime os detalhes completos do certificado em formato de texto.
  • -noout: Impede que o comando imprima a versão codificada do certificado.

Execute o seguinte comando para visualizar os detalhes de cert.pem:

openssl x509 -in cert.pem -text -noout

A saída será bastante longa, mas percorra-a e preste atenção a estes campos principais:

Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            ...
    Signature Algorithm: sha256WithRSAEncryption
        Issuer: C = US, ST = California, L = Mountain View, O = MyOrg, CN = example.com
        Validity
            Not Before: ...
            Not After : ...
        Subject: C = US, ST = California, L = Mountain View, O = MyOrg, CN = example.com
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (2048 bit)
                Modulus:
                    ...
                Exponent: 65537 (0x10001)
...

Observe que os campos Issuer (Emissor) e Subject (Assunto) são idênticos. Esta é a característica definidora de um certificado autoassinado.

Gerar Solicitação de Assinatura de Certificado

Nesta etapa, você gerará uma Solicitação de Assinatura de Certificado (Certificate Signing Request - CSR). Um CSR é um bloco de texto codificado contendo sua chave pública e informações de identidade. Você envia um CSR a uma Autoridade Certificadora (Certificate Authority - CA) para solicitar um certificado digital assinado.

Usaremos novamente o comando openssl req, mas desta vez sem a flag -x509, para que ele gere um CSR em vez de um certificado autoassinado.

  • -new: Indica uma nova solicitação.
  • -key private.pem: Utiliza sua chave privada existente.
  • -out csr.pem: Especifica o nome do arquivo de saída para o CSR.
  • -subj "...": Fornece as informações de identidade para o certificado que você está solicitando.

Execute o seguinte comando para gerar um CSR para uma aplicação web fictícia:

openssl req -new -key private.pem -out csr.pem -subj "/C=US/ST=New York/L=New York City/O=MyWebApp/CN=webapp.example.com"

Este comando criará um novo arquivo chamado csr.pem. Você pode verificar sua criação com o comando ls:

ls

Agora você verá csr.pem no seu diretório de projeto.

ca-key.pem  ca.pem  cert.pem  csr.pem  private.pem

Este CSR está agora pronto para ser enviado a uma CA para assinatura.

Assinar o CSR

Nesta etapa final, você atuará como uma Autoridade Certificadora (CA) para assinar o CSR que você criou na etapa anterior. Para este fim, um certificado CA simples (ca.pem) e sua chave privada correspondente (ca-key.pem) foram pré-gerados em seu ambiente.

Usaremos o comando openssl x509 -req para processar o CSR e emitir um novo certificado.

  • -req: Especifica que estamos processando um CSR.
  • -in csr.pem: O arquivo CSR de entrada.
  • -CA ca.pem: O certificado da CA usado para assinatura.
  • -CAkey ca-key.pem: A chave privada da CA usada para assinatura.
  • -out signed-cert.pem: O arquivo de saída para o certificado recém-assinado.
  • -days 365: Define o período de validade.
  • -CAcreateserial: Cria e gerencia um arquivo de número de série (ca.srl), que é necessário para as CAs rastrearem os certificados emitidos.

Execute o comando abaixo para assinar o CSR:

openssl x509 -req -in csr.pem -CA ca.pem -CAkey ca-key.pem -out signed-cert.pem -days 365 -CAcreateserial

Você verá uma saída confirmando que a assinatura foi bem-sucedida:

Certificate request self-signature ok
subject=C = US, ST = New York, L = New York City, O = MyWebApp, CN = webapp.example.com

Agora, liste os arquivos para ver seu certificado recém-criado, signed-cert.pem, e o arquivo de série, ca.srl.

ls
ca-key.pem  ca.pem  ca.srl  cert.pem  csr.pem  private.pem  signed-cert.pem

Você pode inspecionar este novo certificado com openssl x509 -in signed-cert.pem -text -noout. Você notará que o Issuer (Emissor) é agora a CA (CN=myca.com), e o Subject (Assunto) é a identidade do seu CSR (CN=webapp.example.com).

Resumo

Neste laboratório (lab), você adquiriu experiência prática com o ciclo de vida fundamental dos certificados X.509 usando a ferramenta openssl.

Você aprendeu com sucesso como:

  • Entender os componentes centrais de um certificado X.509 e o conceito de certificados autoassinados (self-signed certificates).
  • Criar um certificado autoassinado adequado para desenvolvimento e testes usando openssl req.
  • Inspecionar os detalhes de um certificado para verificar seu conteúdo com openssl x509.
  • Gerar uma Solicitação de Assinatura de Certificado (CSR) para solicitar formalmente um certificado a uma CA.
  • Atuar como uma Autoridade Certificadora (CA) simples para assinar um CSR e emitir um novo certificado válido.

Estas habilidades são essenciais para qualquer pessoa envolvida em administração de sistemas, segurança de rede ou desenvolvimento de software, fornecendo a base para gerenciar comunicações seguras em uma variedade de aplicações.