主题
sign-pki · 配置
构建变量
来源:sign-pki/Makefile。
| 变量 | 默认值 | 用途 |
|---|---|---|
IMAGE_URL | sign-ca:latest | CA Server 镜像标签;这是现有运行标识 |
PKI_CLI_IMAGE_URL | pki-cli:latest | pki-cli 镜像标签 |
SIGN_KMS_IMAGE | Dockerfile 默认值 | 提供 libkms_pkcs11.so 的 sign-kms 镜像 |
FABRIC_CA_REF | v1.5.22 | 构建 Fabric CA 的 Git ref |
PLATFORM | linux/amd64,linux/arm64 | 多架构平台 |
NO_CACHE | 空 | 非空时给 buildx 添加 --no-cache |
CA_ENV_FILE | local-run/ca-server/.env | 本地 CA Compose env 文件 |
pki-cli KMS 输入
单命令通过以下参数连接 sign-kms:
| 输入 | 规则 |
|---|---|
--kms-endpoint | 覆盖 SIGN_KMS_ENDPOINT,在首次加载 PKCS#11 Client 前设置当前进程环境 |
--pkcs11-lib | 默认 /usr/local/lib/libkms_pkcs11.so |
--pkcs11-pin-env | 只传环境变量名,默认 KMS_PIN |
--ski | 已存在 KMS Key 的 64 位十六进制 SKI,不是 Tag 或人工别名 |
真实 Access Token 只能放环境变量,不能写进 YAML、命令参数或文档示例。
CA Bundle Catalog
Catalog 使用 YAML 且启用严格字段检查,未知字段和尾随文档会被拒绝。
yaml
name: consortium-initial-pki
output:
directory: ./dist
pkcs11:
library: /usr/local/lib/libkms_pkcs11.so
kmsProfiles:
identity-root:
endpoint: kms.example:9200
pinEnv: KMS_PIN_IDENTITY_ROOT
ski: "<64-hex-ski>"
organizations:
central-bank:
type: central-bank
legalName: Central Bank
mspId: CentralBankMSP
country: CN
targets:
- name: identity-root
enabled: true
type: identity-root
organizationRef: central-bank
keyRef: identity-root
commonName: Identity Root CA
notAfter: "2046-08-01T00:00:00Z"支持的 target type:
identity-roottls-rootidentity-intermediatetls-intermediatewallet-ca
当前版本只实现已有 KMS Key 上的 generate/complete 流程;request、issue、existing 等未实现模式会明确失败。一次全量执行要求所有目标使用同一 Endpoint,不同 Endpoint 使用 --name 分开执行。
CA Server PKCS#11
三类生产模板共同使用:
yaml
bccsp:
default: PKCS11
pkcs11:
library: /usr/local/lib/libkms_pkcs11.so
label: KMS_TK
pin:
hash: SHA2
security: 256
softwareverify: false
immutable: true部署时用 FABRIC_CA_SERVER_BCCSP_PKCS11_PIN 注入 Access Token,不在文件中填写 pin。CA Bundle 根目录提供 ca-cert.pem 与 ca-chain.pem,ca.keyfile 为空。
三类生产模板
| 模板 | CA 名称占位/默认 | 关键差异 |
|---|---|---|
identity-ca.fabric-ca-server-config.yaml | 组织 Identity CA | 只签本组织 MSP / 管理身份 |
tls-ca.fabric-ca-server-config.yaml | 组织 TLS CA | 签 TLS Server/Client,TLS 自身允许受控的一次性自举 |
wallet-idemix-ca.fabric-ca-server-config.yaml | wallet-idemix-ca | X.509 signer 只供进程运行;Idemix 密钥另行受控 |
共同的生产要求:
version: 1.5.22;- REST 与 Operations TLS 开启并要求客户端认证;
- 外部 PostgreSQL,数据库 TLS 开启;
registry.maxenrollments: 1且不内置 bootstrap identity;- Prometheus metrics;
- 配置只放明显占位符,Secret 由部署系统注入。
本地配置
local-run/ca-server/docker-compose.ca.yaml 使用同一个本地 KMS_PIN 启动三个 CA,并将 KMS Endpoint 设为 localhost:9200。每个 CA 使用独立 SQLite volume;Wallet CA 另挂载 Idemix msp/ volume。
这是开发/e2e 配置:HTTP、单机 KMS、单 token 和 SQLite 都不得泛化为生产做法。
配置优先级与 Secret
Fabric CA 支持配置文件、环境变量和 CLI flag 覆盖。部署时应使用:
- Secret Manager / Kubernetes Secret 注入 PIN、数据库密码、TLS 私钥和 Enrollment Secret;
- ConfigMap 或只读文件挂载非敏感配置;
- 按组织和信任域拆分 Secret、数据库和 KMS partition;
- 版本化 CA Bundle 与 TLS 材料,保留换代期间的新旧信任锚。