本篇适用于已经能以 Admin 身份登录 Configra 的人。默认情况下,一个应用需要 API Token、客户端证书和对应私钥 才能读取配置。
- Token 决定应用能访问哪些环境。
- 客户端证书和私钥用于证明调用方身份。默认启用的这种双向证书验证称为 mTLS。
- CA(证书颁发机构)用来签发客户端证书。通常由管理员创建,不需要每个应用都创建一个 CA。
1. 创建 CA
进入管理(Administration)的证书页面,创建客户端 CA。默认有效期 5 年,最多 10 年。
首次创建成功时,可以下载包含 CA 公共证书和 CA 私钥 的备份 ZIP。需要这份备份的话,当场保存到受控位置;关闭导出窗口后,不能再次下载 CA 私钥,只能下载公共证书。
没有下载备份也不影响 Configra 继续在线签发:服务在 MySQL 中加密保存了 CA 私钥,使用部署时提供的 Master Key 解密。CA 私钥只用于签发和恢复,不要交给应用。
2. 为应用签发证书
选择刚创建的 CA,为应用签发独立客户端证书。默认有效期 90 天,最多 1 年,而且不能晚于 CA 到期时间。
下载首次导出的 ZIP,保存里面的 client.crt 和 client.key。应用需要的是这一对文件。Configra 不保存客户端私钥,所以丢失后不能重新下载,也不能靠重试创建请求取回;应吊销旧证书并签发一张新的。
证书使用 ECDSA P-256,私钥使用 PKCS#8 格式;使用 Configra SDK 时,不需要自己选择或转换这些格式。

3. 创建 Token 并交给应用
在 Administration 的 API Token 页面创建 Token,选择应用需要的环境,例如 development。保留默认的客户端证书要求,并设置合适的到期时间。
保存首次显示的 Token。应用通常需要以下文件或设置:
| 内容 | 从哪里来 | 用途 |
|---|---|---|
| API 地址 | Configra 部署者提供 | 应用连接的 HTTPS 读取地址,不是网页地址 |
| Token | API Token 页面首次创建时显示 | 授予环境读取权限,可单独保存成文本文件 |
client.crt、client.key |
客户端证书的首次导出 ZIP | 证明客户端身份 |
| 服务器 CA 公共证书(按需) | API 服务器证书的签发者或部署者提供 | 服务器使用内部 CA 时验证服务器 |
这些文件不要求放在某个固定目录。通过部署系统分发,限制为应用运行用户可读,不要放进代码仓库。后续按 Go SDK或 Kubernetes接入。
到期、更换和吊销
证书到期前,先签发新证书,部署到应用并确认读取成功,再吊销旧证书。使用 SDK 的文件式初始化时,更换文件后需要重新创建 Client;高级热轮换见 SDK 说明。
吊销不可撤销。吊销 CA 会阻止它签发的客户端证书继续读取,包括离线签发后再导入的证书。每次读取都会检查状态,已经建立的 TLS 连接也不能绕过。
吊销只能阻止后续读取,不能收回应用已经拿到的配置或同步到 Kubernetes 的数据。
服务运行在 Kubernetes 时
CA 数据在 MySQL 中,不在 Pod 的临时文件或内存里。因此 Pod 重启不会单独丢失 CA,但所有副本必须连接同一个数据库,并使用同一份 Master Key。
API 大约每 5 秒刷新客户端 CA 列表。新 CA 创建后,已有 API 副本可能暂时报 unknown certificate authority,等一个刷新周期再试;同一个已受信任 CA 签发的新证书不需要这次 CA 刷新。持续失败时,检查 CA/证书是否有效,以及 API 是否记录了信任刷新失败。不要关闭证书验证或反复重新创建 CA。
备份数据库,也要单独保护和备份原来的 Master Key。没有 Master Key,只有数据库备份仍然无法解密 CA 私钥或敏感值。不要把它们放在同一个归档或交给同一套访问凭据保管。
不包含的功能
这里管理的是客户端证书,不会自动给 API 服务器签发 HTTPS 证书,也不会替应用部署续期证书、重启进程或配置到期告警。硬件密钥设备和云 KMS 托管不在当前实现中。