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.empresacom 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.crtconfirmando statusOK.
📐 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
- Arquivos
ca.crt,server.crte chaves gerados com sucesso. - Validação com
openssl verifyretornandoOK. - Presença de extensões básicas de autoridade certificadora no certificado raiz.