Pular para conteúdo

Projeto 07: Infraestrutura de Chaves Públicas (PKI) e Certificados X.509 📜

Escopo do Projeto

Objetivo: Criar uma Autoridade Certificadora (CA) raiz privada com OpenSSL e Python, emitir Certificados Digitais X.509 para servidores e clientes, e implementar a validação da cadeia de confiança e revogação de certificados.


🎯 1. Contexto & Desafio Prático

A segurança da web baseia-se na confiança hierárquica de certificados digitais. Você construirá uma Infraestrutura de Chaves Públicas (PKI) corporativa completa, gerando a CA raiz autoassinada, criando solicitações de assinatura de certificado (CSR), assinando certificados de servidores web e validando a cadeia criptográfica de ponta a ponta.


📋 2. Requisitos Técnicos Obrigatórios

  • R1 (Criação de CA Raiz Privada): Gerar par de chaves RSA 4096 e certificado X.509 autoassinado com extensões basicConstraints=CA:TRUE.
  • R2 (Geração de CSR): Gerar Certificate Signing Request (CSR) para o domínio portal.interno.empresa com Subject Alternative Name (SAN).
  • R3 (Assinatura e Emissão): Assinar o certificado do servidor utilizando a CA raiz com validade de 365 dias e extensões de uso de chave.
  • R4 (Validação da Cadeia com OpenSSL): Verificar o certificado emitido com o comando openssl verify -CAfile ca.crt server.crt confirmando status OK.

📐 3. Diagrama Conceitual & Arquitetura

graph TD
    RootCA["Autoridade Certificadora Raiz Privada (Root CA: ca.crt)"] --> Sign["Assinatura Criptográfica X.509"]
    CSR["Certificate Signing Request (CSR do Servidor Web)"] --> Sign
    Sign --> ServerCert["Certificado do Servidor (server.crt com SAN)"]
    ServerCert --> Browser["Validador TLS: Confirma Cadeia até a Root CA"]
    style RootCA fill:#e1f5fe,stroke:#01579b
    style CSR fill:#fff3e0,stroke:#e65100
    style Sign fill:#f3e5f5,stroke:#7b1fa2
    style ServerCert fill:#e8f5e9,stroke:#2e7d32
    style Browser fill:#e0f2f1,stroke:#00695c

💻 4. Especificação Técnica & Código de Referência

// pki_setup.sh
#!/usr/bin/env bash
set -euo pipefail

# 1. Gerar chave privada e certificado da Root CA
openssl req -x509 -new -nodes -keyout ca.key -sha256 -days 1825 -out ca.crt \
  -subj "/C=BR/ST=SP/O=Empresa Corp/CN=Empresa Root CA"

# 2. Gerar chave privada e CSR do servidor
openssl req -new -nodes -keyout server.key -out server.csr \
  -subj "/C=BR/ST=SP/O=Empresa Corp/CN=portal.interno.empresa"

# 3. Assinar o certificado do servidor com a CA raiz
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial \
  -out server.crt -days 365 -sha256

# 4. Validar cadeia de confiança
openssl verify -CAfile ca.crt server.crt

📦 5. Critérios de Avaliação e Entrega

  1. Arquivos ca.crt, server.crt e chaves gerados com sucesso.
  2. Validação com openssl verify retornando OK.
  3. Presença de extensões básicas de autoridade certificadora no certificado raiz.