HPM 转签名 Web 服务介绍


背景

本项目基于之前分享的简易签名服务器方案做的功能拓展——签名服务让 bingo 构建时无需暴露证书即可完成签名,而转签名服务则解决 HPM 包重新签名问题。两者共用同一 Docker 镜像和证书目录,形成共生关系。

此前社区已有基于命令行的转签名方案(topic/204),在 BMC 构建容器中执行 shell 脚本完成 CMS 替换。但实际使用中存在几个突出问题:

  • 环境依赖重:必须进入 Docker 容器,非 BMC 开发同事也需单独分配容器

  • 交互门槛高:纯命令行操作,上传/下载需要 docker cpscp,多领域推广比较麻烦

  • 无法批量处理:一次只能处理一个 .hpm 文件

  • dd bs=1 极慢:原始脚本逐字节拷贝,85MB 文件提取分区需要超过 5 分钟

为此,我们开发了转签名 Web 服务,核心逻辑用 Go 重写,彻底解决了上述痛点。

功能

  1. 极速处理:Go io.ReadAt 替代 dd bs=1,转签名从 6 分钟缩短到 5 秒以内

  2. Web + CLI 双界面:浏览器拖拽上传,curl 命令行一键处理,适配不同场景

  3. 批量并发处理:支持 ZIP/TAR 归档包,自动解压并并发转换多个 HPM 文件

  4. 实时进度推送:Web 端通过 SSE 实时推送处理进度、MD5 校验结果和预计剩余时间

  5. 完整性校验:自动计算并展示原始 MD5 和签名后 MD5

  6. 历史记录:每用户保留最近 10 个任务记录

  7. Docker 一键部署:与签名服务共用同一镜像和证书目录

Web 使用

  1. 浏览器打开 http://<IP>:8080

  2. 拖拽 .hpm 文件到上传区域(或点击选择文件)

  3. 页面即时显示上传进度条

  4. 处理中实时显示:文件名、大小、原始/签名后 MD5、已用时间、预计剩余时间

  5. 完成后点击下载按钮,获取转签名后的 HPM 文件

单个 HPM 文件通常几秒就能完成转换。

部署

详见项目仓库:gitcode.com/yizhonghui/SignServer

5 个赞