czinda/cert-revocation-lab
GitHub: czinda/cert-revocation-lab
一个事件驱动的证书吊销实验环境,支持三重 PKI 层级(含后量子密码)并在 60 秒内自动响应安全事件。
Stars: 0 | Forks: 0
# 事件驱动证书吊销实验环境
一个运行 **三个独立 PKI 层级** 的全栈实验环境——RSA-4096、ECC P-384 和 NIST FIPS 204 ML-DSA-87(后量子)——基于 Dogtag PKI 和 FreeIPA。安全事件通过 Kafka 流入 Event-Driven Ansible,后者自动吊销受损证书,无需人工干预。
### 核心能力
- **三重 PKI** —— RSA、ECC 和后量子(ML-DSA-87)层级同时运行
- **60 秒内响应** —— 从安全事件到证书吊销,零手动步骤
- **EST + ACME 注册** —— RFC 7030 和 RFC 8555 自动化证书签发
- **IoT 设备模拟** —— 采用 EST 优先策略和 REST API 回退的批量设备注册
- **31 种安全事件类型** —— 涵盖 EDR、SIEM、PKI、IoT、身份和网络威胁场景
- **分层验证** —— 具备自动修复功能的 10 级健康检查系统
## PKI 架构
```
┌─────────────────────────────────────────────────────────────────────────────┐
│ Triple PKI Infrastructure │
├─────────────────────────┬─────────────────────────┬─────────────────────────┤
│ RSA-4096 PKI │ ECC P-384 PKI │ ML-DSA-87 PKI │
│ (Traditional) │ (Elliptic Curve) │ (Post-Quantum) │
├─────────────────────────┼─────────────────────────┼─────────────────────────┤
│ Root CA (8443) │ Root CA (8463) │ Root CA (8453) │
│ │ │ │ │ │ │
│ Intermediate CA (8444) │ Intermediate CA (8464) │ Intermediate CA (8454) │
│ ├──┐ │ │ │ │ │
│ IoT Sub-CA (8445) │ IoT Sub-CA (8465) │ IoT Sub-CA (8455) │
│ EST Sub-CA (8447/EST) │ EST Sub-CA (8466/EST) │ EST Sub-CA (8456/EST) │
│ ACME Sub-CA (8446) │ │ │
├─────────────────────────┼─────────────────────────┼─────────────────────────┤
│ Network: 172.26.0.0/24 │ Network: 172.28.0.0/24 │ Network: 172.27.0.0/24 │
│ Certs: data/certs/rsa/ │ Certs: data/certs/ecc/ │ Certs: data/certs/pq/ │
└─────────────────────────┴─────────────────────────┴─────────────────────────┘
FreeIPA (172.25.0.10:4443) - Identity Management with internal CA
```
## 架构概览
```
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ Mock EDR │ │ Mock SIEM │ │ IoT Client │
│ (FastAPI) │ │ (FastAPI) │ │ (FastAPI) │
└──────┬───────┘ └──────┬───────┘ └──────┬───────┘
│ │ │
└─────────┬─────────┘ │
▼ │
┌─────────────────┐ │
│ Kafka │ │
│ (security-events)│ │
└────────┬────────┘ │
▼ ▼
┌─────────────────┐ ┌─────────────────┐
│ Event-Driven │ │ EST/ACME │
│ Ansible │ │ Enrollment │
│ (Rulebook) │ │ │
└────────┬────────┘ └─────────────────┘
│
┌────────┴────────┐
▼ ▼
┌─────────────┐ ┌─────────────┐
│ Dogtag CA │ │ FreeIPA │
│ (REST API) │ │ (Cert Revoke│
│ │ │ via API) │
└─────────────┘ └─────────────┘
```
**事件流:**
1. Mock EDR/SIEM 检测到安全事件
2. 事件发布到 Kafka 主题 `security-events`
3. EDA rulebook 消费事件并触发 playbook
4. Playbook 在相应的 CA(RSA、ECC 或 PQ)上吊销证书
5. 证书状态更新为 REVOKED
## 组件
| 组件 | 用途 | 技术 |
|-----------|---------|------------|
| **Dogtag Root CA** | 信任锚(每个 PKI 层级) | Dogtag PKI, 389DS |
| **Dogtag Intermediate CA** | 在线签发 CA,用于子 CA | Dogtag PKI, 389DS |
| **Dogtag IoT Sub-CA** | IoT 设备证书 | Dogtag PKI, 389DS |
| **Dogtag EST Sub-CA** | EST 注册 (RFC 7030) | Dogtag PKI, 389DS |
| **Dogtag ACME Sub-CA** | ACME 注册 (RFC 8555) | Dogtag PKI, 389DS |
| **FreeIPA** | 身份管理,用户/主机证书 | FreeIPA with Internal Dogtag CA |
| **Kafka** | 事件流总线 | Confluent Kafka |
| **Event-Driven Ansible** | 实时事件处理 | ansible-rulebook |
| **AWX** | 自动化平台 | Ansible AWX |
| **Mock EDR** | 端点检测模拟 | Python FastAPI |
| **Mock SIEM** | 安全事件关联 | Python FastAPI |
| **IoT Client** | IoT 设备注册模拟器 | Python FastAPI |
| **Jupyter Lab** | 交互式笔记本 | JupyterLab |
## 前置条件
- **操作系统**: RHEL 8/9, Rocky Linux, CentOS Stream, Ubuntu 20.04+, 或 Debian 11+
- **资源**: 建议内存 16GB+,磁盘空间 50GB+
- **权限**: 需要 sudo 权限
## 快速开始
### 1. 安装前置条件
```
# 克隆仓库
git clone https://github.com/czinda/cert-revocation-lab.git
cd cert-revocation-lab
# 运行设置脚本(适用于 RHEL 或 Ubuntu)
./setup-prerequisites.sh
# 注销并重新登录以应用组更改
```
### 2. 配置环境
**选项 A: SOPS 加密机密信息(推荐)**
```
# 生成 age 密钥并加密机密信息
./scripts/setup-sops.sh
# 机密信息由 start-lab.sh 自动解密
```
**选项 B: 手动配置**
```
cp .env.example .env
vi .env # Set all CHANGEME values
```
**`.env` 中的必需设置:**
- `ADMIN_PASSWORD` - 所有服务的管理员密码
- `DS_PASSWORD` - Directory Server 密码
- `DB_PASSWORD` - 数据库密码
- `PKI_ADMIN_PASSWORD` - PKI 管理员密码
- `AWX_SECRET_KEY` - AWX 密钥(使用 `openssl rand -hex 32` 生成)
- `JUPYTER_TOKEN` - Jupyter 访问令牌
### 3. 启动实验环境
```
# 仅使用 RSA-4096 PKI 启动(默认)
./start-lab.sh
# 使用特定 PKI 类型启动
./start-lab.sh --rsa # RSA-4096 only
./start-lab.sh --ecc # ECC P-384 only
./start-lab.sh --pqc # ML-DSA-87 only (post-quantum)
# 启动多种 PKI 类型
./start-lab.sh --dual # RSA + ML-DSA-87 (hybrid deployment)
./start-lab.sh --all # All three PKI types
./start-lab.sh --rsa --ecc # RSA + ECC
# 全新启动(删除所有以前的数据)
./start-lab.sh --clean --all
```
### 4. 初始化 PKI 层级
容器启动后,初始化 PKI 层级。PKI 容器需要 **rootful podman** (sudo):
```
# 推荐:完整层级初始化(包括 EST + ACME)
sudo ./scripts/pki/init-pki-hierarchy.sh
# 用于 ECC PKI 层级
sudo ./scripts/pki/init-ecc-pki-hierarchy.sh
# 用于 PQ (ML-DSA-87) PKI 层级
sudo ./scripts/pki/init-pq-pki-hierarchy.sh
# 导出用于 EDA 的管理员凭据
./scripts/setup-eda-auth.sh
# 为 EDA 设置 SSH 以访问 rootful PKI 容器
./scripts/setup-eda-ssh.sh
```
初始化脚本会自动处理:
- Root CA(自签名)
- Intermediate CA(CSR 由 Root CA 签名)
- IoT Sub-CA(CSR 由 Intermediate CA 签名)
- 启用了 EST 子系统的 EST Sub-CA (RFC 7030)
- 带有 ACME 响应器的 ACME Sub-CA(仅限 RSA,RFC 8555)
- 管理员凭据导出
### 5. 证书操作
使用 `lab` CLI 进行证书管理:
```
# 检查服务状态
./lab status
# 列出可用场景
./lab scenarios
# 颁发证书
./lab issue --device mydevice --pki-type rsa --ca-level iot
# 验证证书状态
./lab verify 0x1234ABCD --pki-type rsa --ca-level iot
# 通过 ACME 协议颁发
./lab acme-issue myserver.cert-lab.local
# 通过 EST 协议注册
./lab est-enroll --device sensor01 --pki-type rsa
# 从 EST 获取 CA 证书
./lab est-cacerts --pki-type rsa
```
### 6. 运行测试场景
```
# 完整的端到端吊销测试
./lab test --pki-type rsa --scenario "Certificate Private Key Compromise"
# 手动触发安全事件
./lab trigger --device mydevice --scenario "Ransomware Encryption Detected"
```
### 7. 验证实验环境
```
# 包含健康检查的完整验证
./lab validate
# 自动修复问题(重启容器,创建 topics)
./lab validate --fix
# 从特定层级开始
./lab validate --tier 4 # Start from PKI tier
# 带有修复提示的详细输出
./lab validate --verbose
```
**验证层级(按依赖顺序运行):**
- **Tier 0**: 系统前置条件(podman, 工具, .env)
- **Tier 1**: 网络与卷
- **Tier 2**: 基础设施(postgres, redis, zookeeper)
- **Tier 3**: Kafka 事件总线
- **Tier 4**: PKI 基础设施(389DS, Dogtag CAs, 证书)
- **Tier 5**: FreeIPA 身份管理
- **Tier 6**: AWX / Ansible runner
- **Tier 7**: Event-Driven Ansible (EDA)
- **Tier 8**: 安全工具(Mock EDR, SIEM, IoT Client, Jupyter)
- **Tier 9**: 端到端集成测试
### 8. 停止 / 重置实验环境
```
# 停止所有容器
./stop-lab.sh
# 仅停止特定 PKI
./stop-lab.sh --rsa
./stop-lab.sh --ecc
./stop-lab.sh --pqc
# 停止并删除所有数据
./stop-lab.sh --clean
# 完全重置(删除所有数据、volumes、certs)
./reset-lab.sh --force
```
## 服务 URL
| 服务 | URL | 凭据 |
|---------|-----|-------------|
| **RSA PKI** | | |
| RSA Root CA | https://localhost:8443/ca | admin / (见 .env) |
| RSA Intermediate CA | https://localhost:8444/ca | admin / (见 .env) |
| RSA IoT Sub-CA | https://localhost:8445/ca | admin / (见 .env) |
| RSA ACME Sub-CA | https://localhost:8446/ca | admin / (见 .env) |
| RSA EST Sub-CA | https://localhost:8447/ca | admin / (见 .env) |
| **ECC PKI** | | |
| ECC Root CA | https://localhost:8463/ca | admin / (见 .env) |
| ECC Intermediate CA | https://localhost:8464/ca | admin / (见 .env) |
| ECC IoT Sub-CA | https://localhost:8465/ca | admin / (见 .env) |
| ECC EST Sub-CA | https://localhost:8466/ca | admin / (见 .env) |
| **ML-DSA-87 PKI** | | |
| PQ Root CA | https://localhost:8453/ca | admin / (见 .env) |
| PQ Intermediate CA | https://localhost:8454/ca | admin / (见 .env) |
| PQ IoT Sub-CA | https://localhost:8455/ca | admin / (见 .env) |
| PQ EST Sub-CA | https://localhost:8456/ca | admin / (见 .env) |
| **基础设施** | | |
| FreeIPA | https://localhost:4443/ipa/ui | admin / (见 .env) |
| AWX | http://localhost:8084 | admin / (见 .env) |
| Mock EDR API | http://localhost:8082 | - |
| Mock SIEM API | http://localhost:8083 | - |
| IoT Client API | http://localhost:8085 | - |
| EDA Webhook | http://localhost:5000 | - |
| Jupyter Lab | http://localhost:8888 | Token: (见 .env) |
## 容器网络
**主网络 (172.20.0.0/16)** - rootless podman:
| IP 地址 | 服务 | 端口 |
|------------|---------|-------|
| 172.20.0.20 | PostgreSQL | internal |
| 172.20.0.21 | Redis | internal |
| 172.20.0.22-23 | AWX Web/Task | 8084:8052 |
| 172.20.0.30 | Zookeeper | 2181 |
| 172.20.0.31 | Kafka | 9092 |
| 172.20.0.40 | EDA Server | 5000 |
| 172.20.0.50 | Mock EDR | 8082:8000 |
| 172.20.0.51 | Mock SIEM | 8083:8000 |
| 172.20.0.52 | IoT Client | 8085:8000 |
| 172.20.0.60 | Jupyter | 8888 |
**RSA-4096 PKI 网络 (172.26.0.0/24)** - rootful podman:
| IP 地址 | 服务 | 端口 |
|------------|---------|-------|
| 172.26.0.12 | RSA Root CA | 8443:8443 |
| 172.26.0.11 | RSA Intermediate CA | 8444:8443 |
| 172.26.0.13 | RSA IoT CA | 8445:8443 |
| 172.26.0.18 | ACME Sub-CA | 8446:8443 |
| 172.26.0.20 | RSA EST CA | 8447:8443 |
| 172.26.0.14-16 | 389DS instances | internal |
| 172.26.0.17 | 389DS (ACME) | internal |
| 172.26.0.19 | 389DS (EST) | internal |
**ECC P-384 PKI 网络 (172.28.0.0/24)** - rootful podman:
| IP 地址 | 服务 | 端口 |
|------------|---------|-------|
| 172.28.0.12 | ECC Root CA | 8463:8443 |
| 172.28.0.11 | ECC Intermediate CA | 8464:8443 |
| 172.28.0.13 | ECC IoT CA | 8465:8443 |
| 172.28.0.18 | ECC EST CA | 8466:8443 |
| 172.28.0.14-16 | 389DS instances | internal |
| 172.28.0.17 | 389DS (EST) | internal |
**ML-DSA-87 PKI 网络 (172.27.0.0/24)** - rootful podman:
| IP 地址 | 服务 | 端口 |
|------------|---------|-------|
| 172.27.0.12 | PQ Root CA | 8453:8443 |
| 172.27.0.11 | PQ Intermediate CA | 8454:8443 |
| 172.27.0.13 | PQ IoT CA | 8455:8443 |
| 172.27.0.18 | PQ EST CA | 8456:8443 |
| 172.27.0.14-16 | 389DS instances | internal |
| 172.27.0.17 | 389DS (EST) | internal |
**FreeIPA 网络 (172.25.0.0/24)** - rootful podman:
| IP 地址 | 服务 | 端口 |
|------------|---------|-------|
| 172.25.0.10 | FreeIPA (ipa.cert-lab.local) | 4443:443, 8180:80, 3390:389, 6360:636 |
## 项目结构
```
cert-revocation-lab/
├── podman-compose.yml # Main services (Kafka, AWX, EDA, EDR, SIEM, etc.)
├── pki-compose.yml # RSA-4096 PKI containers
├── pki-ecc-compose.yml # ECC P-384 PKI containers
├── pki-pq-compose.yml # ML-DSA-87 PKI containers
├── freeipa-compose.yml # FreeIPA container
├── setup-prerequisites.sh # Cross-platform podman installation
├── start-lab.sh # Phased startup (--rsa, --ecc, --pqc, --all)
├── stop-lab.sh # Shutdown script
├── reset-lab.sh # Full reset (--force to remove all data)
├── lab # Python CLI entry point
├── .env # Environment configuration
│
├── lab_cli/ # Python CLI package
│ ├── cli.py # Command definitions
│ ├── config.py # Configuration
│ ├── services.py # Service health checks
│ ├── pki.py # PKI operations
│ ├── events.py # Event handling
│ ├── protocols.py # ACME/EST protocol support
│ └── validate.py # Lab validation engine
│
├── configs/pki/ # Dogtag pkispawn configurations
│ ├── root-ca.cfg # RSA Root CA
│ ├── ecc-root-ca.cfg # ECC Root CA
│ ├── pq-root-ca.cfg # PQ Root CA
│ ├── *-step1.cfg / *-step2.cfg # Subordinate CA configs (CSR/install phases)
│ └── est-ca-*.cfg # EST Sub-CA configs (per PKI type)
│
├── scripts/
│ ├── pki-cli.py # Low-level certificate management tool
│ ├── lib-common.sh # Shared shell functions
│ ├── setup-sops.sh # SOPS encrypted secrets setup
│ ├── setup-eda-ssh.sh # EDA SSH key setup
│ ├── setup-eda-auth.sh # EDA admin credential export
│ └── pki/ # PKI initialization scripts
│ ├── init-pki-hierarchy.sh # RSA full hierarchy (+ ACME + EST)
│ ├── init-ecc-pki-hierarchy.sh # ECC full hierarchy (+ EST)
│ ├── init-pq-pki-hierarchy.sh # PQ full hierarchy (+ EST)
│ ├── init-*-ca.sh # Individual CA init scripts
│ ├── enable-est.sh # EST subsystem enablement
│ └── sign-csr.sh # CSR signing utility
│
├── containers/
│ ├── mock-edr/ # FastAPI EDR simulator
│ ├── mock-siem/ # FastAPI SIEM simulator
│ ├── iot-client/ # FastAPI IoT enrollment simulator
│ └── dogtag-pq/ # Custom Dogtag build with ML-DSA support
│
├── ansible/
│ ├── playbooks/
│ │ ├── dogtag-rsa-revoke-certificate.yml # RSA revocation
│ │ ├── dogtag-ecc-revoke-certificate.yml # ECC revocation
│ │ ├── dogtag-pqc-revoke-certificate.yml # PQ revocation
│ │ ├── dogtag-rsa-issue-certificate.yml # RSA issuance
│ │ ├── dogtag-ecc-issue-certificate.yml # ECC issuance
│ │ ├── dogtag-pqc-issue-certificate.yml # PQ issuance
│ │ ├── init-pki-hierarchy.yml # Ansible-based PKI init
│ │ └── sign-csr.yml # Sign CSRs via Ansible
│ ├── rulebooks/
│ │ └── security-events.yml # EDA event handler (31 rules)
│ ├── roles/ # Ansible roles for PKI
│ └── inventory/
│ └── pki_hosts.yml # PKI container inventory
│
├── .archive/ # Superseded scripts (kept for reference)
│
└── data/ # Persistent data (gitignored)
├── certs/
│ ├── rsa/ # RSA-4096 certificates
│ ├── ecc/ # ECC P-384 certificates
│ └── pq/ # ML-DSA-87 certificates
└── pki/ # PKI data volumes
```
## Lab CLI 参考
`lab` CLI (`./lab`) 为所有实验室操作提供了一个统一的接口:
| 命令 | 描述 |
|---------|-------------|
| `./lab status` | 检查所有实验服务的健康状况 |
| `./lab scenarios` | 列出可用的安全事件场景 |
| `./lab test` | 运行完整的端到端吊销测试 |
| `./lab issue` | 从 Dogtag PKI 签发证书 |
| `./lab trigger` | 通过 EDR/SIEM 触发安全事件 |
| `./lab verify` | 检查证书吊销状态 |
| `./lab validate` | 运行全面的实验验证检查 |
| `./lab acme-issue` | 通过 ACME 协议签发证书 (RFC 8555) |
| `./lab est-enroll` | 通过 EST 协议注册证书 (RFC 7030) |
| `./lab est-cacerts` | 从 EST 端点获取 CA 证书 |
```
# 安装依赖项
pip install typer rich httpx
# 或者安装该 package
pip install -e .
```
## Mock 安全工具 API
### EDR 端点
```
# 健康检查
curl http://localhost:8082/health
# 列出攻击场景
curl http://localhost:8082/scenarios
# 触发安全事件
curl -X POST http://localhost:8082/trigger \
-H "Content-Type: application/json" \
-d '{"device_id": "workstation01", "scenario": "Mimikatz Credential Dumping", "severity": "critical"}'
```
### SIEM 端点
```
# 健康检查
curl http://localhost:8083/health
# 列出关联规则
curl http://localhost:8083/rules
# 创建 SIEM 告警
curl -X POST http://localhost:8083/alert \
-H "Content-Type: application/json" \
-d '{"source_ip": "10.0.0.50", "alert_type": "malware_callback", "severity": "critical", "device_hostname": "server01"}'
```
### IoT 客户端端点
```
# 健康检查(包括每种 PKI 类型的 CA 可用性)
curl http://localhost:8085/health
# 创建一个 IoT 设备
curl -X POST http://localhost:8085/devices \
-H "Content-Type: application/json" \
-d '{"device_type": "sensor", "pki_type": "rsa"}'
# 注册设备以获取证书(如可用则使用 EST,回退至 REST API)
curl -X POST http://localhost:8085/devices/{device_id}/enroll
# 批量注册 10 个设备
curl -X POST http://localhost:8085/bulk/enroll \
-H "Content-Type: application/json" \
-d '{"count": 10, "device_type": "sensor", "pki_type": "ecc"}'
# 获取注册统计数据
curl http://localhost:8085/statistics
```
## 安全事件类型
EDA rule 处理 6 个类别共 31 种事件类型,并将每种事件路由到相应的 PKI 层级:
| 类别 | 事件类型 |
|----------|-------------|
| **核心** | malware_detection, credential_theft, ransomware, c2_communication, lateral_movement, privilege_escalation, suspicious_script |
| **PKI/证书** | key_compromise, geo_anomaly, compliance_violation, mitm_detected, rogue_ca |
| **IoT** | firmware_integrity, device_cloning, iot_anomaly, protocol_attack |
| **身份** | impossible_travel, service_account_abuse, mfa_bypass, kerberoasting |
| **网络** | tls_downgrade, ct_log_mismatch, ocsp_bypass |
| **SIEM** | data_exfiltration, unauthorized_access, certificate_misuse |
事件可以使用 `pki_type` 字段(`rsa`、`ecc`、`pqc`)针对特定的 PKI 层级。默认为 RSA-4096。
## 工作原理
```
1. Mock EDR detects "Mimikatz Credential Dumping" on workstation01
2. EDR publishes event to Kafka topic "security-events"
3. EDA rulebook matches event → triggers RSA revocation playbook
4. Playbook finds certificate by subject, revokes on IoT Sub-CA
5. Certificate status changes to REVOKED (reason: key_compromise)
Total elapsed: ~45 seconds
```
## 性能
| 指标 | 数值 |
|--------|-------|
| 检测到吊销耗时 | < 60 秒 |
| 手动基线 | 4-8 小时 |
| 时间缩减 | 99.8% |
| 人工干预 | 零 |
## 故障排除
### 查看容器日志
```
# 主要服务(rootless podman)
podman-compose logs -f
# RSA PKI 容器(rootful podman)
sudo podman-compose -f pki-compose.yml logs -f
# ECC PKI 容器
sudo podman-compose -f pki-ecc-compose.yml logs -f
# PQ PKI 容器
sudo podman-compose -f pki-pq-compose.yml logs -f
# FreeIPA
sudo podman logs -f freeipa
```
### 检查容器状态
```
podman-compose ps
# 用于 rootful PKI 容器
sudo podman ps
```
### 重启服务
```
podman-compose restart
```
### 重置 PKI 数据
```
# 完全重置(删除所有数据、volumes、certs)
./reset-lab.sh --force
# 或者停止并清理
./stop-lab.sh --clean
./start-lab.sh
```
### DNS/网络问题 (aardvark-dns)
如果您看到 `aardvark-dns runs in a different netns` 错误:
```
# 停止所有容器
podman-compose down
sudo podman-compose -f pki-compose.yml down
# 终止 DNS 进程并移除目录
pkill aardvark-dns
rm -rf /run/user/$(id -u)/containers/networks/aardvark-dns
# 用于 rootful podman
sudo pkill aardvark-dns
sudo rm -rf /run/podman/networks/aardvark-dns
# 重启容器
./start-lab.sh
```
### 证书吊销问题
**手动吊销:**
```
# 使用 lab CLI
./lab verify 0x --pki-type rsa --ca-level iot
# 使用 pki-cli.py(底层)
./scripts/pki-cli.py revoke 0x --ca iot --reason key_compromise
```
### PKI 容器无法启动
PKI 容器需要 rootful podman(systemd 支持):
```
# 使用 sudo 启动 PKI
sudo podman-compose -f pki-compose.yml up -d
# 查看日志
sudo podman logs dogtag-root-ca
```
### 运行实验验证
```
# 带有自动修复的综合检查
./lab validate --fix --verbose
```
## 使用的技术
- **[Dogtag PKI](https://www.dogtagpki.org/)** - 企业级证书颁发机构
- **[FreeIPA](https://www.freeipa.org/)** - 身份管理
- **[389 Directory Server](https://www.port389.org/)** - LDAP 服务器
- **[Ansible AWX](https://github.com/ansible/awx)** - 自动化平台
- **[Event-Driven Ansible](https://www.ansible.com/use-cases/event-driven-automation)** - 实时自动化
- **[Apache Kafka](https://kafka.apache.org/)** - 事件流
- **[Podman](https://podman.io/)** - 容器运行时
- **[FastAPI](https://fastapi.tiangolo.com/)** - Python Web 框架
## 相关标准
| 标准 | 实验室中的应用 |
|----------|-------------|
| [RFC 7030](https://datatracker.ietf.org/doc/html/rfc7030) | 通过专用 EST Sub-CA 进行 EST 证书注册 |
| [RFC 8555](https://datatracker.ietf.org/doc/html/rfc8555) | ACME 自动化证书签发(RSA 层级) |
| [RFC 5280](https://datatracker.ietf.org/doc/html/rfc5280) | X.509 证书配置文件和 CRL 生成 |
| [FIPS 204](https://csrc.nist.gov/pubs/fips/204/final) | ML-DSA-87 后量子数字签名 |
| [NIST SP 800-207](https://csrc.nist.gov/pubs/sp/800/207/final) | 零信任架构原则 |
## 作者
**czinda** - Red Hat 高级技术产品经理
关注领域:PKI, 身份管理, 零信任架构
## 许可证
仅供教育/演示使用
标签:ACME, Ansible, Dogtag PKI, ECC P-384, EDR, EST, FreeIPA, IoT安全, JSONLines, Kafka, ML-DSA-87, RSA-4096, SonarQube插件, 事件驱动架构, 公钥基础设施, 即时响应, 合规自动化, 后量子密码学, 域名收集, 实验室环境, 数字证书, 结构化查询, 网络安全, 联邦身份, 脆弱性评估, 自动化安全, 证书吊销, 身份管理, 软件成分分析, 逆向工具, 量子安全, 隐私保护, 零信任