主题
sign-pki · 架构
两个发布物
ca-server 与 pki-cli 共用 PKCS#11 访问链,但生命周期不同:前者是在线服务,后者是无状态、可审计的离线执行工具。
CA 层级与信任域
text
Identity Root CA(离线)
├── Central Bank Identity Intermediate CA
├── Bank01…BankNN Identity Intermediate CA
└── Wallet Operational X.509 Intermediate CA
TLS Root CA(离线)
├── Central Bank TLS Intermediate CA
└── Bank01…BankNN TLS Intermediate CA
Wallet Idemix CA(央行在线)
└── Idemix Issuer / Revocation 参数Identity、TLS 与 Wallet Idemix 是三个用途边界。Wallet Operational X.509 Intermediate 只满足 Fabric CA 进程运行需要,不得进入联盟 MSP,也不得签发普通网络身份。
CA Server 镜像
ca-server/Dockerfile 分三部分:
- 从
SIGN_KMS_IMAGE取得libkms_pkcs11.so。 - 在 Go builder 中检出
FABRIC_CA_REF=v1.5.22,用GO_TAGS=pkcs11构建fabric-ca-server;跨架构时选择对应 CGO 工具链。 - 将二进制与 PKCS#11 库放入
ubuntu:24.04,暴露7054、9443、8125,默认执行fabric-ca-server start --idemix.curve gurvy.Bn254。
镜像不内置某一组织的证书、数据库、PIN/JWT 或 Enrollment Secret。它消费部署时挂载的配置、公开 CA Bundle 和 Secret。
pki-cli 分层
| 包 | 职责 |
|---|---|
commands/ | 命令路由、flag、环境输入、结果映射 |
ceremony/ | KMS 会话和离线 Root / Intermediate 仪式编排 |
bundle/ | Catalog 解析、依赖排序、资产目录发布与校验 |
material/ | CSR、证书和链的 inspect / verify 应用逻辑 |
pki/ | X.509 固定策略、PEM、SKI、PKCS#11 与原子文件能力 |
cliio/ | text / JSON 输出协议 |
apperr/ | 稳定错误码与退出码 |
依赖方向由架构测试约束:commands 保持薄层,公开材料检查不依赖签名或 PKCS#11,pki 不拥有 JSON 表示协议。
生产边界
- 正式 CA API 与 Operations API 必须开启 TLS;高权限接口使用 mTLS 或等价强访问控制。
- 生产多副本使用外部高可用 PostgreSQL/MySQL,不使用 SQLite。
- 每个组织、每个信任域使用独立数据库、HSM partition、Registrar 和网络边界。
- CA 进程自己的 HTTPS 私钥使用 SW PEM;CA signer Key 仍通过 PKCS#11/HSM。
- TLS Intermediate CA 只允许在无外部入口、单副本、回环地址上进行一次性 HTTP 自举,完成后必须以 HTTPS/mTLS 重启。
完整治理约束见 sign-pki/docs/pki-architecture-standard.md,上线步骤见 sign-pki/docs/fabric-ca-production-rollout.md。
本地演示与生产的差异
local-run/ 使用 HTTP、单机 KMS 和独立 SQLite volume,目的是开发/e2e。ca-server/templates/production/ 则提供 Identity、TLS、Wallet Idemix 三类生产配置骨架,使用外部数据库、HTTPS/mTLS、Operations mTLS 和占位符 Secret。两者不能互换。