🧩 Exercícios: TLS/SSL e Certificados Digitais
Extra Guia de Redes de Computadores • Trilha Progressiva em 4 Níveis
🎯 Nível 1: Fundamentos
Problema 6.1 — Por que o TLS 1.3 removeu a troca de chaves RSA estática?
Contexto: Explique a vulnerabilidade de longo prazo do RSA estático e o conceito de Perfect Forward Secrecy (PFS).
Resultado Esperado
No RSA estático, se a chave privada do servidor vazar no futuro, um atacante que tenha gravado todo o tráfego de rede passado poderá descriptografar retroativamente todas as sessões históricas. O TLS 1.3 exige ECDHE efêmero, gerando chaves temporárias únicas por sessão que são descartadas da memória imediatamente após o uso.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_06_1_SeuNome.md - Envie na tarefa:
Atividade Cap 06 - Criptografia TLS e SSL
🔑 Gabarito de Código & Solução Comentada
O Perfect Forward Secrecy garante que o comprometimento da chave privada do servidor hoje NÃO permite descriptografar o tráfego gravado ontem.
🎯 Nível 2: Prática
Problema 6.2 — Geração de Certificados Autoassinados com OpenSSL
Escreva o comando openssl para gerar uma chave privada RSA de 2048 bits e um certificado autoassinado X.509 válido por 365 dias para ambiente de desenvolvimento local (localhost).
🔑 Gabarito de Código & Solução Comentada
openssl req -x509 -newkey rsa:2048 -nodes \
-keyout localhost.key \
-out localhost.crt \
-days 365 \
-subj "/CN=localhost"
🎯 Nível 3: Integração
Problema 6.3 — Automação de Emissão de Certificado Let’s Encrypt com Certbot para Nginx
Escreva o comando Certbot com o plugin oficial do Nginx para emitir e renovar automaticamente um certificado SSL para o domínio api.empresa.com.br.
🔑 Gabarito de Código & Solução Comentada
# 1. Instalação e execução do Certbot com plugin Nginx:
sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d api.empresa.com.br --non-interactive --agree-tos -m devops@empresa.com.br
# 2. Teste do dry-run de renovação automática:
sudo certbot renew --dry-run
🎯 Nível 4: Desafio
Problema 6.4 — Implementação de Autenticação Mútua mTLS (Mutual TLS) em Nginx
Configure um bloco de servidor Nginx que exija mTLS, validando certificados de cliente (Client Certificates) emitidos pela CA interna corporativa antes de conceder acesso aos endpoints bancários.
🔑 Gabarito de Código & Solução Comentada
server {
listen 443 ssl http2;
server_name core-banking.empresa.internal;
# Certificado do Servidor:
ssl_certificate /etc/ssl/certs/server.crt;
ssl_certificate_key /etc/ssl/private/server.key;
# Configuração de mTLS (Certificado de Cliente Obrigatório):
ssl_client_certificate /etc/ssl/certs/ca_corporativa.crt;
ssl_verify_client on;
ssl_verify_depth 2;
# Hardening de Ciphers TLS 1.3:
ssl_protocols TLSv1.3;
ssl_prefer_server_ciphers off;
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header X-Client-DN $ssl_client_s_dn;
proxy_set_header X-Client-Verify $ssl_client_verify;
}
}