主题
sign-kms · 快速开始
本章严格基于 README.md、Makefile、scripts/init-softhsm.sh 实证内容。
前置依赖
来源:README.md:20-25。
- Go 1.25+
- SoftHSM2
- Node.js 20+ / pnpm
- protoc + protoc-gen-go
必需环境变量
来源:README.md:27-34、pkg/auth/config.go:38-44。
| 变量 | 说明 |
|---|---|
KMS_AUTH_SECRET | JWT 签名密钥。未设置时 GetAuthSecret() 会 panic(pkg/auth/config.go:44) |
SOFTHSM_LIB | SoftHSM 库路径 |
可选:
| 变量 | 出处 |
|---|---|
KMS_AUTH_COOKIE | pkg/auth/config.go:15;不设置默认 access_token |
DEFAULT_ADMIN_PWD | internal/data/init_user.go 读取(首次启动管理员密码) |
SIGN_KMS_ENDPOINT | libkms_pkcs11.so 的客户端连接地址(p11client/kms_so.c:202) |
KMS_SO_DEBUG | libkms_pkcs11.so 调试日志(p11client/kms_so.c:39) |
初始化 SoftHSM
来源:scripts/init-softhsm.sh(README 描述)。
sh
./scripts/init-softhsm.sh脚本创建 7 个测试分区:
platform-subcatls-subcabank-a-subca、bank-b-subcadevice-subcaissuer-signing、auditor-signing
每个分区生成 EC P-256 密钥。
启动
来源:Makefile:55、README.md:60-62。
sh
cd cmd/kms
make start实际命令:SOFTHSM_LIB=... kratos run -- -conf ../../conf(Makefile:56)。
监听端口:
- gRPC:
0.0.0.0:9200 - HTTP:
0.0.0.0:9201
Makefile 关键目标
来源:Makefile。
| target | 行号 | 用途 |
|---|---|---|
init | 18 | 安装 protoc-gen-go / go-grpc / kratos / protoc-gen-go-http / protoc-gen-openapi / wire |
api | 28 | protoc 生成 api/*.proto |
config | 38 | protoc 生成 internal/conf/*.proto |
ent | 46 | go generate ./internal/data/... |
wire | 51 | go generate ./cmd/kms/... |
start | 55 | 启动开发 server |
build | 61 | go build → ./bin/sign-kms |
build-web | 66 | pnpm install && pnpm build 前端 |
build-embed | 70 | build-web + cp web/dist + go build -tags embed + rm dist |
clean-web | 78 | 删除 web/dist 与 internal/server/web |
build-image | 83 | build-web + docker compose build + 可选 push |
generate | 93 | go generate ./... + go mod tidy |
all | 99 | config + build + generate |
验证
来源:README.md(启动端口)、internal/server/http.go:73 的 obs.RegisterRoutes。
sh
# HTTP 服务可达 + 健康检查
curl http://localhost:9201/healthz # 端点在 obs 路由组具体 healthz 响应字段 [未核]。