-
作者:长江计算 易重辉
背景
本项目基于之前分享的简易签名服务器方案做的功能拓展——签名服务让 bingo 构建时无需暴露证书即可完成签名,而转签名服务则解决 HPM 包重新签名问题。两者共用同一 Docker 镜像和证书目录,形成共生关系。
此前社区已有基于命令行的转签名方案(topic/204),在 BMC 构建容器中执行 shell 脚本完成 CMS 替换。但实际使用中存在几个突出问题:
-
环境依赖重:必须进入 Docker 容器,非 BMC 开发同事也需单独分配容器
-
交互门槛高:纯命令行操作,上传/下载需要
docker cp或scp,多领域推广比较麻烦 -
无法批量处理:一次只能处理一个
.hpm文件 -
dd bs=1极慢:原始脚本逐字节拷贝,85MB 文件提取分区需要超过 5 分钟
为此,我们开发了转签名 Web 服务,核心逻辑用 Go 重写,彻底解决了上述痛点。
功能
-
极速处理:Go
io.ReadAt替代dd bs=1,转签名从 6 分钟缩短到 5 秒以内 -
Web + CLI 双界面:浏览器拖拽上传,
curl命令行一键处理,适配不同场景 -
批量并发处理:支持 ZIP/TAR 归档包,自动解压并并发转换多个 HPM 文件
-
实时进度推送:Web 端通过 SSE 实时推送处理进度、MD5 校验结果和预计剩余时间
-
完整性校验:自动计算并展示原始 MD5 和签名后 MD5
-
历史记录:每用户保留最近 10 个任务记录
-
Docker 一键部署:与签名服务共用同一镜像和证书目录
Web 使用
-
浏览器打开
http://<IP>:8080 -
拖拽
.hpm文件到上传区域(或点击选择文件) -
页面即时显示上传进度条
-
处理中实时显示:文件名、大小、原始/签名后 MD5、已用时间、预计剩余时间
-
完成后点击下载按钮,获取转签名后的 HPM 文件
单个 HPM 文件通常几秒就能完成转换。
