Skip to content

sign-pki · 架构

两个发布物

ca-serverpki-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 分三部分:

  1. SIGN_KMS_IMAGE 取得 libkms_pkcs11.so
  2. 在 Go builder 中检出 FABRIC_CA_REF=v1.5.22,用 GO_TAGS=pkcs11 构建 fabric-ca-server;跨架构时选择对应 CGO 工具链。
  3. 将二进制与 PKCS#11 库放入 ubuntu:24.04,暴露 705494438125,默认执行 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。两者不能互换。