Skip to content

sign-ca · 模块详解

本仓库 submodule:sign-ca/。每条均带 file:line 引用,路径均相对于该 submodule 根。

顶层

路径行数 / 说明出处
README.md136 行;9 个章节README.md
Dockerfile93 行;3 个 stage(sign-kms-source / fabric-ca-builder / runtime)Dockerfile
Makefile85 行;8 个 targetMakefile
docker-compose.yaml2 service:kmscadocker-compose.yaml
.env-exampleenv 模板
go.modmodule=github.com/built-by-sign/sign-ca、go=1.25.1、唯一依赖 github.com/miekg/pkcs11 v1.1.2go.mod:1-5
todo.md36 行;e2e 实现进度todo.md

conf/ — fabric-ca 配置

文件行数说明
conf/fabric-ca-server-config.yaml279fabric-ca-server 主配置。顶层段:versionportdebugcrlsizelimittlscabccspcsrregistrydbaffiliationssigningcrlintermediateldapoperationsmetrics

kms-conf/ — sign-kms 服务端配置

文件行数顶层 key
kms-conf/sign-ca.yaml33serverdataobservabilityhsm

cmd/sign-ca-cli/ — 离线工具

文件行数 / 说明出处
main.go61 行;os.Args[1] switch 分发入口(非 cobra)cmd/sign-ca-cli/main.go:27-47
commands/doc.go20 行;包注释 + defaultLib 常量commands/doc.go
commands/self_sign.goRunSelfSignmain.go:33
commands/gen_csr.goRunGenCSRmain.go:35
commands/sign_csr.goRunSignCSRmain.go:37
pki/cert.goX.509 / CSR 模板(未细读)
pki/p11.goPKCS#11 helper(未细读)
pki/ski.goSKI 推导(未细读)

main.go:49-61 中的 usage 输出:

sign-ca-cli self-sign  [flags]   # self-signed root CA cert
sign-ca-cli gen-csr    [flags]   # CSR signed by a KMS-resident key
sign-ca-cli sign-csr   [flags]   # issue cert by signing a CSR with a KMS-resident key

必需 env:SIGN_KMS_ENDPOINTmain.go:59-60)。

默认 PKCS#11 库路径:/usr/local/lib/libkms_pkcs11.socommands/doc.go:20)。所有子命令支持 --pkcs11-lib 覆盖(commands/doc.go:19)。

[未核]

三个子命令的完整 flag 列表(除 --pkcs11-lib)。需直接读 commands/*.go

e2e/ — 集成测试

总计 846 行(3 个文件)。

文件行数关键符号
e2e_test.go93build tag e2e(第 1 行);TestMain(第 56-69 行);全局 state(第 33-54 行)
helpers_test.go188signECDSALowS(37-48)、genFabricCAToken(50-69)、doWithToken(71-103)、doWithAdminToken(105-109)、enrollWithBasicAuth(111-188)
scenarios_test.go565TestCAFlow(28-39)+ 10 个 t.Run 子测

10 个子测(scenarios_test.go):

#名称行号
01testHealthz45-67
02testCAInfo73-145
03testEnrollAdmin154-170
04testRegisterUser172-214
05testEnrollUser217-232
06testVerifyCertChain235-278
07testReenroll282-373
08testListIdentities376-422
09testRevoke425-474
10testGenCRL477-563

全局 state 字段(e2e_test.go:33-54):caCerts / caRoots / adminKey / adminCert / adminCertPEM / userName / userSecret / userKey / userCert / userCertPEM / revokedDone

deploy/multi-ca/ — 多 CA 部署模板

路径说明
docker-compose.yaml117 行;4 个 service:kms / postgres / pg-init / ca-bank1
.env.example29 行;变量见 配置
postgres/init.sqlDB 初始化 SQL [未读]
root/README.md根 CA 离线仪式说明 [未读]
root/ca-cert.pemsign-ca-cli 生成的根 cert
bank1/bank1.csr中间 CA CSR
bank1/ca-cert.pem中间 CA cert(由 root 离线签)
bank1/sign-ca.yamlbank1 fabric-ca-server 配置 [未读]

docs/

来源:README.md:119-122 提到的两份文档。

文件用途
docs/fabric-ca-server-guide.md[未读],README 提及
docs/e2e-scenarios.md[未读],README 第 117 行提及

Makefile target 一览

target行号主要命令
help17-31打印用法
check-env33-38test -n "$(SIGN_KMS_IMAGE)"
build40-47docker buildx build --load(单架构)
build-multi49-57docker buildx build --platform --push(多架构)
test-setup59-70条件启动:KMS_PIN 空 → 仅 kms;否则 kms + ca
test-teardown72-74docker compose down
test-e2e78-80go test -tags=e2e -v -count=1 ./e2e/...
clean82-85docker compose down -v + docker rmi

来源:Makefile

看代码推荐路径

  1. README.md → 仓库目标与两阶段启动。
  2. Dockerfile → 三阶段构建产物(fabric-ca-serverlibkms_pkcs11.so 的来源)。
  3. docker-compose.yaml → 运行时编排。
  4. conf/fabric-ca-server-config.yaml → 关键配置段(特别是 bccsp 段,第 55-89 行)。
  5. Makefile:59-70test-setup 两阶段判断逻辑。
  6. e2e/scenarios_test.go → 10 个 t.Run 子测覆盖业务面。
  7. cmd/sign-ca-cli/main.go → 离线工具入口;细节看三个 commands/*.go