主题
sign-ca · 配置
本章数据全部取自 .env-example / docker-compose.yaml / conf/fabric-ca-server-config.yaml / kms-conf/sign-ca.yaml / deploy/multi-ca/.env.example 的实际写法。
.env(单 CA 部署)
来源:README.md:34-39、.env-example。
| 变量 | 用途 |
|---|---|
IMAGE_URL | sign-ca 镜像地址 |
SIGN_KMS_IMAGE | sign-kms 镜像地址 |
FABRIC_CA_REF | fabric-ca 源码版本(仅 build 用) |
KMS_AUTH_SECRET | sign-kms JWT 签名密钥 |
KMS_LABEL | sign-kms token label(第一次启 kms 后从 UI 拿) |
KMS_PIN | 与 label 对应的 JWT |
docker-compose.yaml 直接读:
${SIGN_KMS_IMAGE}→kms镜像(第 11 行)${IMAGE_URL}→ca镜像(第 26 行)${KMS_LABEL}/${KMS_PIN}→ 注入到ca服务 env(第 37-38 行)
WARNING
KMS_AUTH_SECRET 在 docker-compose.yaml:19 硬编码为 1234567890111223,不是从 .env 读取。生产部署需要修改。
conf/fabric-ca-server-config.yaml
来源:conf/fabric-ca-server-config.yaml,279 行(末行 prefix: server 无尾随换行符,wc -l 报 278)。挂载到 ca 容器的 /etc/hyperledger/fabric-ca-server/(docker-compose.yaml:40)。
顶层段索引
| 段 | 起始行 |
|---|---|
version | 8 |
port | 14 |
debug | 17 |
crlsizelimit | 20 |
tls | 25-35 |
ca | 40-50 |
bccsp | 55-89 |
csr | 94-110 |
registry | 115-133 |
db | 138-146 |
affiliations | 151-156 |
signing | 161-182 |
crl | 187-190 |
intermediate | 195-209 |
ldap | 214-230(注释掉) |
operations | 235-257 |
metrics | 262-279 |
关键字段实测值
| 字段 | 值 | 行号 |
|---|---|---|
version | 1.5.16 | 8 |
port | 7054 | 14 |
debug | false | 17 |
crlsizelimit | 512000 | 20 |
tls.enabled | false | 27 |
ca.name | sign-ca | 42 |
ca.certfile / keyfile / chainfile | 空 | 44-46 |
bccsp.default | PKCS11 | 58 |
bccsp.pkcs11.library | /usr/local/lib/libkms_pkcs11.so | 70 |
bccsp.pkcs11.label | KMS_TK | 73 |
bccsp.pkcs11.pin | 空(由 env 覆盖) | 76 |
bccsp.pkcs11.hash | SHA2 | 79 |
bccsp.pkcs11.security | 256 | 82 |
bccsp.pkcs11.softwareverify | false | 86 |
bccsp.pkcs11.immutable | false | 89 |
csr.cn | sign-ca | — |
csr.keyrequest.algo / size | ecdsa / 256 | — |
csr.ca.expiry | 131400h | — |
csr.ca.pathlength | 1 | — |
registry.maxenrollments | -1 | 118 |
registry.identities[0].name / pass / type | admin / adminpw / client | 121-133 |
db.type / datasource | sqlite3 / fabric-ca-server.db | 138-146 |
signing.default.expiry | 8760h | 161-182 |
signing.profiles.ca.expiry | 43800h | 同上 |
crl.expiry | 24h | 187-190 |
operations.listenAddress | 0.0.0.0:9443 | 237 |
operations.tls.enabled | false | 242 |
metrics.provider | prometheus | 264 |
metrics.statsd.network / address / writeInterval / prefix | udp / 127.0.0.1:8125 / 10s / server | 269-279 |
env 覆盖
来源:README.md:102-111、docker-compose.yaml:37-38。
| YAML 路径 | env 变量 | 注入来源 |
|---|---|---|
bccsp.pkcs11.label | FABRIC_CA_SERVER_BCCSP_PKCS11_LABEL | ${KMS_LABEL} |
bccsp.pkcs11.pin | FABRIC_CA_SERVER_BCCSP_PKCS11_PIN | ${KMS_PIN} |
通用规则:FABRIC_CA_SERVER_<UPPER_SNAKE_PATH> 可覆盖任意 yaml 键(README.md:111)。
容器内额外 env:SIGN_KMS_ENDPOINT=kms:9200(docker-compose.yaml:33),由 libkms_pkcs11.so 读取。
启动参数:fabric-ca-server start --idemix.curve gurvy.Bn254(Dockerfile:93、docker-compose.yaml 不覆盖 CMD)。
kms-conf/sign-ca.yaml
来源:kms-conf/sign-ca.yaml,33 行。挂载到 kms 容器的 /sign-kms/conf(docker-compose.yaml:21)。
yaml
server:
addr: 0.0.0.0:9200
http_addr: 0.0.0.0:9201
timeout: 60s
https: false
web_dist_path: ../../web/dist
data:
database:
driver: sqlite3
source: 'file:./data/kms.db?cache=shared&_fk=1'
observability:
otlp_endpoint: 10.128.0.6:4317
insecure: true
metrics:
enable: false
tracing:
enable: false
sample_ratio: 1.0
logging:
enable: false
hsm:
providers:
- id: softhsm-dev
name: SoftHSM (Dev)
type: soft
library: /usr/lib/softhsm/libsofthsm2.so
enabled: true注意 observability.metrics.enable / tracing.enable / logging.enable 默认均为 false。
多 CA 部署(deploy/multi-ca/)
.env
来源:deploy/multi-ca/.env.example,29 行。
| 变量 | 行号 |
|---|---|
SIGN_KMS_IMAGE | 14 |
IMAGE_URL | 15 |
KMS_AUTH_SECRET | 18 |
KMS_PIN_BANK1 | 23 |
POSTGRES_SUPERUSER_PASSWORD | 26 |
PG_PASSWORD_BANK1 | 29 |
docker-compose.yaml
来源:deploy/multi-ca/docker-compose.yaml,117 行。
| Service | 关键字段 |
|---|---|
kms | image ${SIGN_KMS_IMAGE}、env KMS_AUTH_SECRET=${KMS_AUTH_SECRET}、volumes 与单 CA 版同名(kms-tokens / kms-data 命名卷 + kms-conf bind),但此处 kms-conf bind 路径为 ../../kms-conf:/sign-kms/conf(相对 deploy/multi-ca/,单 CA 版为 ./kms-conf)(第 29-41 行) |
postgres | image postgres:18.3-alpine3.23、ports 5432:5432、env POSTGRES_USER=postgres / POSTGRES_DB=postgres / POSTGRES_PASSWORD=${POSTGRES_SUPERUSER_PASSWORD}、healthcheck pg_isready -U postgres(第 43-59 行) |
pg-init | image postgres:18.3-alpine3.23、profiles: ["init"]、entrypoint psql -v PG_PASSWORD_BANK1=${PG_PASSWORD_BANK1} -f /init.sql(第 61-81 行) |
ca-bank1 | image ${IMAGE_URL}、ports 7054:7054 / 9443:9443、env SIGN_KMS_ENDPOINT=kms:9200 / FABRIC_CA_SERVER_BCCSP_PKCS11_PIN=${KMS_PIN_BANK1} / FABRIC_CA_SERVER_DB_DATASOURCE=host=postgres port=5432 user=ca_bank1_app password=${PG_PASSWORD_BANK1} dbname=sign_ca_bank1 sslmode=disable、command fabric-ca-server start --config /etc/hyperledger/fabric-ca-server/sign-ca.yaml --idemix.curve gurvy.Bn254、depends_on: postgres(service_healthy), kms(service_started)(第 83-112 行) |
注释中的 bootstrap 顺序
来源:deploy/multi-ca/docker-compose.yaml:1-26。
- 填
.env docker compose up -d kms postgres- 浏览器开
:9201创建 partition + JWT - JWT 写入
.env docker compose run --rm pg-init- 预放 intermediate CA cert 到
./bank1/ca-cert.pem docker compose up -d ca-bank1
[未核]
bank1/sign-ca.yaml 与 postgres/init.sql 的具体内容、root/README.md 的仪式流程文字 —— 未读,请直接看仓库内文件。