DAT CMS

DAT CMS 创建证书,将其存入数据库,并向签发和验证服务提供合适的证书。协议行为见DAT CMS 规范

创建运行时配置

DAT 证书管理服务

dns

服务器

Port默认: 8088
Hostname默认: Auto
terminal

运行命令

bash
检查 API
bash
database

数据库

API 缓存默认: 60
verified_user

DAT 证书

签名算法
加密算法
证书签发延迟help
DAT 签发期间help
DAT TTL (寿命)help
DAT 证书生成计划 (Cron)help
lock

访问控制

Master 令牌
生成 DAT 证书并获取服务器版本
Full Cert 令牌
获取 Full (Pair Key, Hash Key) 证书
Verify Cert 令牌
获取 Verify (Verify Key Only) 证书

使用 Docker 运行

以 non-root 用户运行容器。使用 SQLite 时,挂载可写数据目录。通过 Secret 注入机制传递令牌和数据库密码,而不是命令历史。

docker run --rm --name dat-cms -p 8088:8088 \
  --user 10001:10001 \
  -v "$PWD/dat-cms-data:/data" \
  -e PORT=8088 \
  -e DB_URI='sqlite:/data/data.db' \
  -e TOKEN_MASTER='replace-with-a-secret' \
  -e TOKEN_CERT_FULL='replace-with-a-secret' \
  -e TOKEN_CERT_VERIFY='replace-with-a-secret' \
  sarolab/dat-cms

数据库

使用 DB_URI 配置 SQLite、PostgreSQL 或 MySQL 连接。MariaDB 通过 MySQL 协议连接。CMS 将证书查询结果缓存为快照,并在存储刷新临时失败时继续提供最后一份成功快照。

DB_CACHE_SECS 设置快照刷新间隔,DB_QUERY_TIMEOUT_SECS 限制刷新查询。如果没有成功快照且无法读取存储,服务返回 DAT_STORE_UNAVAILABLE

访问角色

环境变量权限使用者
TOKEN_MASTER注册证书并获取受保护版本运维
TOKEN_CERT_FULL获取完整证书DAT 签发服务
TOKEN_CERT_VERIFY获取仅验证证书验证与解密服务

每个变量都接受逗号分隔的字母数字令牌。如果某角色的令牌列表为空,则其端点开放并记录警告。

证书生成

master 角色通过指定签名算法、加密算法、传播延迟、签发期间和 TTL 注册证书。在传播延迟期间,服务在新证书可签发前将其同步。

客户端集成

  1. 签发服务使用 full 令牌和完整证书端点。
  2. 验证服务使用 verify 令牌和仅验证选项。
  3. 检查首次同步的结果;如果启动必须失败,调用立即同步 API。
  4. 启用自动同步时,在应用关闭期间关闭管理器。

有关各语言的 builder 和关闭行为,请参阅库指南

运维检查

  • /health/version/api 无需认证即可报告状态。
  • 配置该角色时,/version 需要 master 令牌。
  • 从标准输出和标准错误收集日志。
  • 转发关闭信号,并留出时间让数据库和调度器关闭。

Kubernetes

使容器端口和 probe 与服务端口一致,并为 non-root 用户以可写方式挂载数据目录。通过 Secrets 注入令牌和数据库连接详情。

securityContext:
  runAsNonRoot: true
  runAsUser: 10001
  runAsGroup: 10001
containers:
  - name: dat-cms
    image: sarolab/dat-cms
    ports: [{ containerPort: 8088 }]
    readinessProbe: { httpGet: { path: /health, port: 8088 } }
    livenessProbe: { httpGet: { path: /health, port: 8088 } }