c Configra / 使用文档v1.0.1
Configra证书与访问凭据

证书与访问凭据

给应用准备 Token 和客户端证书,并说明文件丢失、到期或泄露后怎么处理。

本篇适用于已经能以 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 时,不需要自己选择或转换这些格式。

Configra 的客户端 CA 管理页面,使用演示数据

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 托管不在当前实现中。

对应版本 v1.0.1查看源码 ↗