@purecore/one-jwt-4-all 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +87 -0
- package/LICENSE-COGFULNESS +117 -0
- package/examples/MTLS_AGENTS.md +288 -0
- package/examples/SELF_HEALING_AGENTS.md +269 -0
- package/examples/SIGNAL_E2EE.md +457 -0
- package/examples/mtls-agents.ts +539 -0
- package/examples/self-healing-agents.ts +355 -0
- package/examples/signal-e2ee-agents.ts +827 -0
- package/package.json +20 -0
- package/readme.md +507 -0
- package/reports/22-12-2024_01-50.md +165 -0
- package/src/examples.mcps.ts +86 -0
- package/src/examples.ts +81 -0
- package/src/index.ts +286 -0
- package/tsconfig.json +24 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
Todas as mudanças notáveis neste projeto serão documentadas neste arquivo.
|
|
4
|
+
|
|
5
|
+
O formato é baseado em [Keep a Changelog](https://keepachangelog.com/pt-BR/1.0.0/),
|
|
6
|
+
e este projeto adere ao [Semantic Versioning](https://semver.org/lang/pt-BR/).
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## [Release] v1.2.0 - 2024-12-22
|
|
11
|
+
|
|
12
|
+
### What's Changed
|
|
13
|
+
|
|
14
|
+
* **Signal Protocol E2EE para Agentes**
|
|
15
|
+
- Implementação completa do Double Ratchet Algorithm do Signal Protocol
|
|
16
|
+
- Suporte a X3DH (Extended Triple Diffie-Hellman) para key agreement
|
|
17
|
+
- Criptografia AES-256-GCM para mensagens
|
|
18
|
+
- Perfect Forward Secrecy (PFS) por mensagem
|
|
19
|
+
- Post-Compromise Security (PCS)
|
|
20
|
+
- Integração com sistema de JWT existente
|
|
21
|
+
|
|
22
|
+
* **Documentação Completa**
|
|
23
|
+
- Novo arquivo `examples/SIGNAL_E2EE.md` com explicação detalhada
|
|
24
|
+
- Comparação entre Signal E2EE e mTLS
|
|
25
|
+
- Guia de como usar ambos em conjunto
|
|
26
|
+
- Referências para especificações oficiais
|
|
27
|
+
|
|
28
|
+
* **Novos Arquivos**
|
|
29
|
+
- `examples/signal-e2ee-agents.ts` - Implementação do protocolo
|
|
30
|
+
- `examples/SIGNAL_E2EE.md` - Documentação completa
|
|
31
|
+
- `CHANGELOG.md` - Este arquivo
|
|
32
|
+
- `reports/` - Pasta para relatórios
|
|
33
|
+
|
|
34
|
+
### New Contributors
|
|
35
|
+
|
|
36
|
+
* Implementação baseada nas especificações oficiais do Signal Protocol
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## [Release] v1.1.0 - 2024-12-21
|
|
41
|
+
|
|
42
|
+
### What's Changed
|
|
43
|
+
|
|
44
|
+
* **mTLS para Agentes**
|
|
45
|
+
- Implementação de mutual TLS para autenticação de transporte
|
|
46
|
+
- Certificate Authority (CA) para geração de certificados
|
|
47
|
+
- Suporte a conexões TLS bidirecionais
|
|
48
|
+
- Integração com JWT para autenticação dupla
|
|
49
|
+
|
|
50
|
+
* **Documentação**
|
|
51
|
+
- `examples/MTLS_AGENTS.md` - Guia de uso do mTLS
|
|
52
|
+
|
|
53
|
+
### Arquivos Adicionados
|
|
54
|
+
|
|
55
|
+
- `examples/mtls-agents.ts`
|
|
56
|
+
- `examples/MTLS_AGENTS.md`
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## [Release] v1.0.0 - 2024-12-20
|
|
61
|
+
|
|
62
|
+
### What's Changed
|
|
63
|
+
|
|
64
|
+
* **Self-Healing Agents**
|
|
65
|
+
- Sistema de renovação automática de tokens JWT
|
|
66
|
+
- Suporte a conversação entre agentes com JWT
|
|
67
|
+
- Token Authority centralizada
|
|
68
|
+
|
|
69
|
+
* **Core JWT**
|
|
70
|
+
- Implementação de SignJWT com builder pattern
|
|
71
|
+
- Função jwtVerify compatível com jose
|
|
72
|
+
- Suporte exclusivo a EdDSA (Ed25519)
|
|
73
|
+
- Geração de pares de chaves
|
|
74
|
+
|
|
75
|
+
### Arquivos Base
|
|
76
|
+
|
|
77
|
+
- `src/index.ts` - Core da biblioteca
|
|
78
|
+
- `examples/self-healing-agents.ts`
|
|
79
|
+
- `examples/SELF_HEALING_AGENTS.md`
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
## Links
|
|
84
|
+
|
|
85
|
+
- [Documentação Signal E2EE](./examples/SIGNAL_E2EE.md)
|
|
86
|
+
- [Documentação mTLS](./examples/MTLS_AGENTS.md)
|
|
87
|
+
- [Documentação Self-Healing](./examples/SELF_HEALING_AGENTS.md)
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
# Cogfulness Ethical License (CEL) v1.0
|
|
2
|
+
|
|
3
|
+
**Copyright (c) 2026, Cogfulness Foundation**
|
|
4
|
+
|
|
5
|
+
## 📖 Definição de Termos
|
|
6
|
+
|
|
7
|
+
**"Sistema Cognitivo"** refere-se a qualquer software, aplicação ou sistema que:
|
|
8
|
+
|
|
9
|
+
- Auxilie no desenvolvimento cognitivo saudável dos usuários
|
|
10
|
+
- Promova bem-estar mental e emocional
|
|
11
|
+
- Respeite a autonomia e privacidade cognitiva
|
|
12
|
+
- Não explore estados alterados de consciência
|
|
13
|
+
|
|
14
|
+
**"Exploração Cognitiva"** refere-se a qualquer uso que:
|
|
15
|
+
|
|
16
|
+
- Manipule estados cognitivos para fins comerciais não éticos
|
|
17
|
+
- Interfira na autonomia cognitiva dos usuários
|
|
18
|
+
- Cause danos psicológicos ou emocionais
|
|
19
|
+
- Utilize dados cognitivos sem consentimento explícito
|
|
20
|
+
|
|
21
|
+
## 🎯 Permissões
|
|
22
|
+
|
|
23
|
+
É concedida permissão, livre de encargos, a qualquer pessoa que obtenha uma cópia deste software e arquivos de documentação associados (o "Software"), para:
|
|
24
|
+
|
|
25
|
+
1. **Usar** o Software para fins éticos e/ou comerciais
|
|
26
|
+
2. **Copiar** o Software para distribuição pessoal ou comercial
|
|
27
|
+
3. **Modificar** o Software desde que mantenha compatibilidade ética
|
|
28
|
+
4. **Distribuir** o Software com as mesmas condições éticas ou comerciais
|
|
29
|
+
5. **Incorporar** o Software em sistemas cognitivos éticos ou comerciais
|
|
30
|
+
|
|
31
|
+
## ⚖️ Condições Éticas Obrigatórias
|
|
32
|
+
|
|
33
|
+
### 1. Uso Ético Exclusivo
|
|
34
|
+
|
|
35
|
+
O Software deve ser utilizado exclusivamente para promover:
|
|
36
|
+
- Desenvolvimento cognitivo saudável
|
|
37
|
+
- Bem-estar mental e emocional
|
|
38
|
+
- Autonomia e privacidade cognitiva
|
|
39
|
+
- Práticas éticas de tecnologia
|
|
40
|
+
|
|
41
|
+
### 2. Proibição de Exploração
|
|
42
|
+
|
|
43
|
+
É expressamente proibido:
|
|
44
|
+
- Usar o Software para exploração cognitiva
|
|
45
|
+
- Manipular estados de consciência para fins comerciais
|
|
46
|
+
- Coletar dados cognitivos sem consentimento explícito
|
|
47
|
+
- Causar danos psicológicos ou emocionais
|
|
48
|
+
|
|
49
|
+
### 3. Transparência Cognitiva
|
|
50
|
+
Qualquer modificação ou distribuição deve:
|
|
51
|
+
- Manter esta licença intacta
|
|
52
|
+
- Divulgar claramente as intenções cognitivas
|
|
53
|
+
- Documentar impactos cognitivos conhecidos
|
|
54
|
+
|
|
55
|
+
## 🚨 Consequências Legais
|
|
56
|
+
|
|
57
|
+
### Violação Ética Detectada
|
|
58
|
+
Se for constatado uso do Software para exploração cognitiva:
|
|
59
|
+
|
|
60
|
+
1. **Imputação Legal Automática**: A Cogfulness.Foundation poderá iniciar processos legais contra o infrator
|
|
61
|
+
2. **Responsabilização Civil**: O infrator será responsável por danos cognitivos causados
|
|
62
|
+
3. **Sanções Comerciais**: Perda de direitos de uso comercial
|
|
63
|
+
4. **Publicação de Violações**: Casos graves serão publicados publicamente
|
|
64
|
+
|
|
65
|
+
### Processo de Investigação
|
|
66
|
+
- A Cogfulness.Foundation atuará como entidade fiscalizadora
|
|
67
|
+
- Investigações serão conduzidas por especialistas em ética cognitiva
|
|
68
|
+
- Decisões serão baseadas em evidências técnicas e testemunhais
|
|
69
|
+
|
|
70
|
+
## 📜 Isenções e Responsabilidades
|
|
71
|
+
|
|
72
|
+
### Isenção de Garantia
|
|
73
|
+
O SOFTWARE É FORNECIDO "COMO ESTÁ", SEM GARANTIA DE QUALQUER TIPO, EXPRESSA OU IMPLÍCITA, INCLUINDO MAS NÃO SE LIMITANDO A GARANTIAS DE COMERCIALIZAÇÃO, ADEQUAÇÃO A UM DETERMINADO FIM E NÃO VIOLAÇÃO.
|
|
74
|
+
|
|
75
|
+
### Limitação de Responsabilidade
|
|
76
|
+
EM NENHUMA HIPÓTESE OS AUTORES OU DETENTORES DE DIREITOS AUTORAIS SERÃO RESPONSÁVEIS POR QUAISQUER RECLAMAÇÕES, DANOS OU OUTRAS RESPONSABILIDADES, SEJA EM AÇÃO CONTRATUAL, DELITO OU OUTRO, DECORRENTES DE, FORA DE OU EM CONEXÃO COM O SOFTWARE OU O USO OU OUTRAS NEGOCIAÇÕES NO SOFTWARE.
|
|
77
|
+
|
|
78
|
+
### Responsabilidade Ética
|
|
79
|
+
O usuário assume total responsabilidade pela utilização ética do Software. O uso inadequado constitui violação desta licença e pode resultar em consequências legais através da Cogfulness.Foundation.
|
|
80
|
+
|
|
81
|
+
## 🌟 Compatibilidade e Extensões
|
|
82
|
+
|
|
83
|
+
### Licenças Compatíveis
|
|
84
|
+
Esta licença é compatível com:
|
|
85
|
+
- MIT License (para componentes não-cognitivos)
|
|
86
|
+
- BSD Licenses
|
|
87
|
+
- Apache License 2.0 (com cláusulas adicionais)
|
|
88
|
+
|
|
89
|
+
### Extensões Éticas
|
|
90
|
+
Projetos podem estender esta licença com cláusulas adicionais específicas para:
|
|
91
|
+
- Privacidade de dados cognitivos
|
|
92
|
+
- Consentimento informado
|
|
93
|
+
- Limites de exposição tecnológica
|
|
94
|
+
- Monitoramento ético obrigatório
|
|
95
|
+
|
|
96
|
+
## 📞 Contato e Fiscalização
|
|
97
|
+
|
|
98
|
+
### Cogfulness.Foundation
|
|
99
|
+
- **Website**: https://cognfulness.foundation
|
|
100
|
+
- **Email**: ethics@cognfulness.foundation
|
|
101
|
+
- **Missão**: Proteger a integridade cognitiva na era digital
|
|
102
|
+
|
|
103
|
+
### Denúncias
|
|
104
|
+
Casos suspeitos de violação ética devem ser reportados para: violations@cognfulness.foundation
|
|
105
|
+
|
|
106
|
+
## 🔄 Atualizações da Licença
|
|
107
|
+
|
|
108
|
+
Esta licença pode ser atualizada para:
|
|
109
|
+
- Melhorar proteções éticas
|
|
110
|
+
- Adaptar-se a novos desafios cognitivos
|
|
111
|
+
- Incluir melhores práticas emergentes
|
|
112
|
+
|
|
113
|
+
Usuários serão notificados sobre mudanças significativas através dos canais oficiais do projeto.
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
**Ao utilizar este Software, você concorda com estes termos éticos e reconhece as responsabilidades cognitivas envolvidas.**
|
|
@@ -0,0 +1,288 @@
|
|
|
1
|
+
# 🔒 Self-Healing Agents com mTLS (Mutual TLS)
|
|
2
|
+
|
|
3
|
+
## 🎯 Visão Geral
|
|
4
|
+
|
|
5
|
+
Extensão do sistema de Self-Healing Agents que adiciona **mTLS (Mutual TLS)** para fornecer segurança em **duas camadas**:
|
|
6
|
+
|
|
7
|
+
1. **mTLS (Camada de Transporte)**: Autenticação mútua via certificados X.509
|
|
8
|
+
2. **JWT (Camada de Aplicação)**: Autenticação de identidade e contexto da conversa
|
|
9
|
+
|
|
10
|
+
## 🛡️ Por que mTLS + JWT?
|
|
11
|
+
|
|
12
|
+
### Segurança em Duas Camadas
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
┌─────────────────────────────────────────────────┐
|
|
16
|
+
│ Camada de Aplicação (JWT) │
|
|
17
|
+
│ - Identidade do agente │
|
|
18
|
+
│ - Contexto da conversa │
|
|
19
|
+
│ - Permissões e capacidades │
|
|
20
|
+
└─────────────────────────────────────────────────┘
|
|
21
|
+
│
|
|
22
|
+
┌─────────────────────────────────────────────────┐
|
|
23
|
+
│ Camada de Transporte (mTLS) │
|
|
24
|
+
│ - Autenticação mútua de certificados │
|
|
25
|
+
│ - Criptografia de transporte │
|
|
26
|
+
│ - Prevenção de MITM (Man-in-the-Middle) │
|
|
27
|
+
└─────────────────────────────────────────────────┘
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
### Benefícios Combinados
|
|
31
|
+
|
|
32
|
+
- ✅ **Autenticação Dupla**: Certificado + JWT
|
|
33
|
+
- ✅ **Criptografia End-to-End**: Dados protegidos em trânsito
|
|
34
|
+
- ✅ **Prevenção de MITM**: Certificados validam identidade do transporte
|
|
35
|
+
- ✅ **Contexto Preservado**: JWT mantém contexto mesmo com renovação
|
|
36
|
+
- ✅ **Self-Healing**: Sistema se recupera automaticamente
|
|
37
|
+
|
|
38
|
+
## 🏗️ Arquitetura
|
|
39
|
+
|
|
40
|
+
```
|
|
41
|
+
┌─────────────────────────────────────────────────┐
|
|
42
|
+
│ Certificate Authority (CA) │
|
|
43
|
+
│ - Gera certificados para agentes │
|
|
44
|
+
│ - Assina certificados │
|
|
45
|
+
│ - Valida certificados │
|
|
46
|
+
└─────────────────────────────────────────────────┘
|
|
47
|
+
│
|
|
48
|
+
┌───────────┴───────────┐
|
|
49
|
+
│ │
|
|
50
|
+
┌───────▼────────┐ ┌─────────▼────────┐
|
|
51
|
+
│ Agent Alpha │ │ Agent Beta │
|
|
52
|
+
│ - Cert mTLS │◄──►│ - Cert mTLS │
|
|
53
|
+
│ - JWT Token │ │ - JWT Token │
|
|
54
|
+
│ - TLS Server │ │ - TLS Server │
|
|
55
|
+
└────────────────┘ └─────────────────┘
|
|
56
|
+
│ │
|
|
57
|
+
└───────────┬───────────┘
|
|
58
|
+
│
|
|
59
|
+
┌───────────▼───────────┐
|
|
60
|
+
│ Conexão mTLS │
|
|
61
|
+
│ + Mensagens JWT │
|
|
62
|
+
└───────────────────────┘
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## 📖 Como Funciona
|
|
66
|
+
|
|
67
|
+
### 1. Geração de Certificados
|
|
68
|
+
|
|
69
|
+
Cada agente recebe um certificado X.509 assinado pela CA:
|
|
70
|
+
|
|
71
|
+
```typescript
|
|
72
|
+
import { CertificateAuthority } from './examples/mtls-agents';
|
|
73
|
+
|
|
74
|
+
const ca = new CertificateAuthority();
|
|
75
|
+
|
|
76
|
+
// Gerar certificado para cada agente
|
|
77
|
+
const certA = ca.generateAgentCertificate('agent-alpha');
|
|
78
|
+
const certB = ca.generateAgentCertificate('agent-beta');
|
|
79
|
+
const caCert = ca.getCACertificate(); // Para validação
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### 2. Estabelecimento de Conexão mTLS
|
|
83
|
+
|
|
84
|
+
```typescript
|
|
85
|
+
// Agente A inicia servidor TLS
|
|
86
|
+
await agentA.startTLSServer(8443);
|
|
87
|
+
|
|
88
|
+
// Agente B conecta ao Agente A via mTLS
|
|
89
|
+
await agentB.connectToPeer('localhost', 8443, 'agent-alpha');
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### 3. Verificação Mútua
|
|
93
|
+
|
|
94
|
+
Quando uma conexão é estabelecida:
|
|
95
|
+
|
|
96
|
+
1. **Cliente envia certificado** → Servidor valida contra CA
|
|
97
|
+
2. **Servidor envia certificado** → Cliente valida contra CA
|
|
98
|
+
3. **Ambos verificam** → Conexão só é aceita se ambos forem válidos
|
|
99
|
+
|
|
100
|
+
### 4. Comunicação Segura
|
|
101
|
+
|
|
102
|
+
Cada mensagem inclui:
|
|
103
|
+
- **Conteúdo**: Dados da mensagem
|
|
104
|
+
- **JWT**: Token de autenticação de aplicação
|
|
105
|
+
- **Metadados**: Timestamp, IDs, etc.
|
|
106
|
+
|
|
107
|
+
## 🚀 Uso Básico
|
|
108
|
+
|
|
109
|
+
### Exemplo Completo
|
|
110
|
+
|
|
111
|
+
```typescript
|
|
112
|
+
import { mTLSAgent, CertificateAuthority, TokenAuthority } from './examples/mtls-agents';
|
|
113
|
+
|
|
114
|
+
// 1. Criar CA e Autoridade de Tokens
|
|
115
|
+
const ca = new CertificateAuthority();
|
|
116
|
+
const tokenAuthority = new TokenAuthority();
|
|
117
|
+
|
|
118
|
+
// 2. Gerar certificados
|
|
119
|
+
const certA = ca.generateAgentCertificate('agent-alpha');
|
|
120
|
+
const certB = ca.generateAgentCertificate('agent-beta');
|
|
121
|
+
const caCert = ca.getCACertificate();
|
|
122
|
+
|
|
123
|
+
// 3. Criar agentes
|
|
124
|
+
const agentA = new mTLSAgent(
|
|
125
|
+
'agent-alpha',
|
|
126
|
+
'primary',
|
|
127
|
+
tokenAuthority,
|
|
128
|
+
certA,
|
|
129
|
+
caCert
|
|
130
|
+
);
|
|
131
|
+
|
|
132
|
+
const agentB = new mTLSAgent(
|
|
133
|
+
'agent-beta',
|
|
134
|
+
'secondary',
|
|
135
|
+
tokenAuthority,
|
|
136
|
+
certB,
|
|
137
|
+
caCert
|
|
138
|
+
);
|
|
139
|
+
|
|
140
|
+
// 4. Inicializar
|
|
141
|
+
await agentA.initialize();
|
|
142
|
+
await agentB.initialize();
|
|
143
|
+
|
|
144
|
+
// 5. Iniciar servidores TLS
|
|
145
|
+
await agentA.startTLSServer(8443);
|
|
146
|
+
await agentB.startTLSServer(8444);
|
|
147
|
+
|
|
148
|
+
// 6. Estabelecer conexões mTLS
|
|
149
|
+
await agentA.connectToPeer('localhost', 8444, 'agent-beta');
|
|
150
|
+
await agentB.connectToPeer('localhost', 8443, 'agent-alpha');
|
|
151
|
+
|
|
152
|
+
// 7. Ativar auto-renovação
|
|
153
|
+
agentA.startAutoRenewal(30000);
|
|
154
|
+
agentB.startAutoRenewal(30000);
|
|
155
|
+
|
|
156
|
+
// 8. Enviar mensagens seguras
|
|
157
|
+
await agentA.sendMessage('agent-beta', 'Mensagem segura via mTLS + JWT');
|
|
158
|
+
await agentB.sendMessage('agent-alpha', 'Resposta igualmente segura!');
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
## 🔐 Segurança
|
|
162
|
+
|
|
163
|
+
### Validações Implementadas
|
|
164
|
+
|
|
165
|
+
1. **Validação de Certificado mTLS**
|
|
166
|
+
- Certificado deve ser assinado pela CA conhecida
|
|
167
|
+
- Certificado não pode estar expirado
|
|
168
|
+
- CN (Common Name) deve corresponder ao agentId
|
|
169
|
+
|
|
170
|
+
2. **Validação de JWT**
|
|
171
|
+
- Assinatura criptográfica válida
|
|
172
|
+
- Issuer e Audience corretos
|
|
173
|
+
- Token não expirado
|
|
174
|
+
- Mesmo conversationId
|
|
175
|
+
|
|
176
|
+
3. **Verificação Cruzada**
|
|
177
|
+
- agentId do JWT deve corresponder ao CN do certificado
|
|
178
|
+
- Previne ataques de substituição de identidade
|
|
179
|
+
|
|
180
|
+
### Proteções Contra Ataques
|
|
181
|
+
|
|
182
|
+
| Ataque | Proteção |
|
|
183
|
+
|--------|----------|
|
|
184
|
+
| **Man-in-the-Middle** | mTLS valida certificados mutuamente |
|
|
185
|
+
| **Token Replay** | JWT com expiração curta + renovação |
|
|
186
|
+
| **Identity Spoofing** | Verificação cruzada JWT ↔ Certificado |
|
|
187
|
+
| **Eavesdropping** | Criptografia TLS de transporte |
|
|
188
|
+
| **Certificate Forgery** | Assinatura pela CA confiável |
|
|
189
|
+
|
|
190
|
+
## 📊 Comparativo: Sem mTLS vs Com mTLS
|
|
191
|
+
|
|
192
|
+
| Aspecto | Sem mTLS | Com mTLS |
|
|
193
|
+
|---------|----------|----------|
|
|
194
|
+
| **Autenticação de Transporte** | ❌ Não | ✅ Sim (certificados) |
|
|
195
|
+
| **Criptografia de Transporte** | ⚠️ Depende | ✅ Sempre (TLS) |
|
|
196
|
+
| **Prevenção MITM** | ❌ Não | ✅ Sim |
|
|
197
|
+
| **Validação de Identidade** | JWT apenas | JWT + Certificado |
|
|
198
|
+
| **Overhead** | Baixo | Médio (handshake inicial) |
|
|
199
|
+
| **Complexidade** | Simples | Média |
|
|
200
|
+
|
|
201
|
+
## 🧪 Testando
|
|
202
|
+
|
|
203
|
+
### Executar Demonstração
|
|
204
|
+
|
|
205
|
+
```bash
|
|
206
|
+
# Compilar
|
|
207
|
+
bun build examples/mtls-agents.ts --outdir dist/examples --target node
|
|
208
|
+
|
|
209
|
+
# Executar
|
|
210
|
+
bun run dist/examples/mtls-agents.js
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
### Saída Esperada
|
|
214
|
+
|
|
215
|
+
```
|
|
216
|
+
🚀 Demonstração de Self-Healing Agents com mTLS
|
|
217
|
+
|
|
218
|
+
✅ CA e Autoridade de Tokens criadas
|
|
219
|
+
✅ Certificados mTLS gerados para os agentes
|
|
220
|
+
🤖 [agent-alpha] Agente inicializado com mTLS e token válido até...
|
|
221
|
+
🤖 [agent-beta] Agente inicializado com mTLS e token válido até...
|
|
222
|
+
🔒 [agent-alpha] Servidor mTLS iniciado na porta 8443
|
|
223
|
+
🔒 [agent-beta] Servidor mTLS iniciado na porta 8444
|
|
224
|
+
🔒 [agent-alpha] Conectado via mTLS a agent-beta
|
|
225
|
+
🔒 [agent-beta] Conexão mTLS estabelecida com agent-alpha
|
|
226
|
+
💬 Iniciando conversa segura via mTLS...
|
|
227
|
+
|
|
228
|
+
📤 [agent-alpha] → [agent-beta] (mTLS): Olá Beta! Conexão segura estabelecida via mTLS.
|
|
229
|
+
📥 [agent-beta] ← [agent-alpha] (mTLS): Olá Beta! Conexão segura estabelecida via mTLS.
|
|
230
|
+
📤 [agent-beta] → [agent-alpha] (mTLS): Olá Alpha! Nossa comunicação está protegida por mTLS + JWT.
|
|
231
|
+
📥 [agent-alpha] ← [agent-beta] (mTLS): Olá Alpha! Nossa comunicação está protegida por mTLS + JWT.
|
|
232
|
+
|
|
233
|
+
✅ Demonstração concluída!
|
|
234
|
+
🔒 Segurança em duas camadas:
|
|
235
|
+
1. mTLS: Autenticação mútua de transporte
|
|
236
|
+
2. JWT: Autenticação de identidade e contexto
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
## 🔧 Configuração Avançada
|
|
240
|
+
|
|
241
|
+
### Opções TLS Customizadas
|
|
242
|
+
|
|
243
|
+
```typescript
|
|
244
|
+
// Ao criar servidor TLS, você pode passar opções customizadas
|
|
245
|
+
const tlsOptions: tls.TlsOptions = {
|
|
246
|
+
cert: certificate.cert,
|
|
247
|
+
key: certificate.key,
|
|
248
|
+
ca: [caCert],
|
|
249
|
+
requestCert: true,
|
|
250
|
+
rejectUnauthorized: true,
|
|
251
|
+
minVersion: 'TLSv1.3', // Forçar TLS 1.3
|
|
252
|
+
ciphers: 'ECDHE-RSA-AES256-GCM-SHA384', // Cipher específico
|
|
253
|
+
// ... outras opções
|
|
254
|
+
};
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
### Certificados de Produção
|
|
258
|
+
|
|
259
|
+
Para produção, use certificados gerados por uma CA confiável:
|
|
260
|
+
|
|
261
|
+
```typescript
|
|
262
|
+
// Carregar certificados de arquivos
|
|
263
|
+
import { readFileSync } from 'fs';
|
|
264
|
+
|
|
265
|
+
const cert = readFileSync('./certs/agent-alpha.crt', 'utf-8');
|
|
266
|
+
const key = readFileSync('./certs/agent-alpha.key', 'utf-8');
|
|
267
|
+
const caCert = readFileSync('./certs/ca.crt', 'utf-8');
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
## 📚 Referências
|
|
271
|
+
|
|
272
|
+
- [RFC 8446 - TLS 1.3](https://tools.ietf.org/html/rfc8446)
|
|
273
|
+
- [Mutual TLS Authentication](https://en.wikipedia.org/wiki/Mutual_authentication)
|
|
274
|
+
- [Node.js TLS Documentation](https://nodejs.org/api/tls.html)
|
|
275
|
+
- [mTLS Best Practices](https://www.cloudflare.com/learning/access-management/what-is-mutual-tls/)
|
|
276
|
+
|
|
277
|
+
## 🚀 Próximos Passos
|
|
278
|
+
|
|
279
|
+
- [ ] Suporte para múltiplas CAs
|
|
280
|
+
- [ ] Revogação de certificados (CRL/OCSP)
|
|
281
|
+
- [ ] Rotação automática de certificados
|
|
282
|
+
- [ ] Métricas de segurança e performance
|
|
283
|
+
- [ ] Integração com sistemas de PKI existentes
|
|
284
|
+
|
|
285
|
+
---
|
|
286
|
+
|
|
287
|
+
**Segurança em duas camadas: transporte (mTLS) + aplicação (JWT) para comunicação entre agentes totalmente segura.**
|
|
288
|
+
|