Skip to content

sign-pki · 配置

构建变量

来源:sign-pki/Makefile

变量默认值用途
IMAGE_URLsign-ca:latestCA Server 镜像标签;这是现有运行标识
PKI_CLI_IMAGE_URLpki-cli:latestpki-cli 镜像标签
SIGN_KMS_IMAGEDockerfile 默认值提供 libkms_pkcs11.so 的 sign-kms 镜像
FABRIC_CA_REFv1.5.22构建 Fabric CA 的 Git ref
PLATFORMlinux/amd64,linux/arm64多架构平台
NO_CACHE非空时给 buildx 添加 --no-cache
CA_ENV_FILElocal-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-root
  • tls-root
  • identity-intermediate
  • tls-intermediate
  • wallet-ca

当前版本只实现已有 KMS Key 上的 generate/complete 流程;requestissueexisting 等未实现模式会明确失败。一次全量执行要求所有目标使用同一 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.pemca-chain.pemca.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.yamlwallet-idemix-caX.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 材料,保留换代期间的新旧信任锚。