Skip to content

sign-kms · 快速开始

本章严格基于 README.mdMakefilescripts/init-softhsm.sh 实证内容。

前置依赖

来源:README.md:20-25

  • Go 1.25+
  • SoftHSM2
  • Node.js 20+ / pnpm
  • protoc + protoc-gen-go

必需环境变量

来源:README.md:27-34pkg/auth/config.go:38-44

变量说明
KMS_AUTH_SECRETJWT 签名密钥。未设置时 GetAuthSecret() 会 panic(pkg/auth/config.go:44
SOFTHSM_LIBSoftHSM 库路径

可选:

变量出处
KMS_AUTH_COOKIEpkg/auth/config.go:15;不设置默认 access_token
DEFAULT_ADMIN_PWDinternal/data/init_user.go 读取(首次启动管理员密码)
SIGN_KMS_ENDPOINTlibkms_pkcs11.so 的客户端连接地址(p11client/kms_so.c:202
KMS_SO_DEBUGlibkms_pkcs11.so 调试日志(p11client/kms_so.c:39

初始化 SoftHSM

来源:scripts/init-softhsm.sh(README 描述)。

sh
./scripts/init-softhsm.sh

脚本创建 7 个测试分区:

  • platform-subca
  • tls-subca
  • bank-a-subcabank-b-subca
  • device-subca
  • issuer-signingauditor-signing

每个分区生成 EC P-256 密钥。

启动

来源:Makefile:55README.md:60-62

sh
cd cmd/kms
make start

实际命令:SOFTHSM_LIB=... kratos run -- -conf ../../confMakefile:56)。

监听端口:

  • gRPC:0.0.0.0:9200
  • HTTP:0.0.0.0:9201

Makefile 关键目标

来源:Makefile

target行号用途
init18安装 protoc-gen-go / go-grpc / kratos / protoc-gen-go-http / protoc-gen-openapi / wire
api28protoc 生成 api/*.proto
config38protoc 生成 internal/conf/*.proto
ent46go generate ./internal/data/...
wire51go generate ./cmd/kms/...
start55启动开发 server
build61go build./bin/sign-kms
build-web66pnpm install && pnpm build 前端
build-embed70build-web + cp web/dist + go build -tags embed + rm dist
clean-web78删除 web/distinternal/server/web
build-image83build-web + docker compose build + 可选 push
generate93go generate ./... + go mod tidy
all99config + build + generate

验证

来源:README.md(启动端口)、internal/server/http.go:73obs.RegisterRoutes

sh
# HTTP 服务可达 + 健康检查
curl http://localhost:9201/healthz   # 端点在 obs 路由组

具体 healthz 响应字段 [未核]。

下一步

  • 核心流程 — 启动 / Token 签发 / Sign 链路 / 密钥生成
  • API 参考 — gRPC KmsService + HTTP KmsManageService + libkms_pkcs11.so C 接口
  • 配置conf.proto schema + core.yaml