You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用HSM生成的外部签名将Jar发布到Maven Central?

如何结合HSM签名将库发布到Maven Central?

我需要将一个库发布到Maven Central,同时使用**硬件安全模块(HSM)**对二进制文件进行签名。查阅文档后发现,常规方案使用maven-gpg-plugin,但该插件需要直接处理密钥及口令,而我的密钥存储在HSM中,完全无法导出,因此无法直接使用这个插件。

当前CI流水线(简化版)

我已搭建了分阶段的CI流程:

  • build任务:生成Jar包并上传,供后续步骤复用
  • sign任务:在自托管运行器上执行,下载制品后通过sign-gui.ps1实现的图形界面完成人工签名流程(比如连接安全网络访问HSM、输入PIN码,或插入智能卡验证等)
jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v3
      - name: Set up JDK 11
        uses: actions/setup-java@v3
        with:
          java-version: '11'
          distribution: 'temurin'
          cache: maven

      - name: Build the jar
        run: mvn package -DskipTests

      - name: Upload jar for subsequent reuse by signer
        uses: actions/upload-artifact@v3
        with:
          name: compiled-jar
          path: target/library.jar

  sign:
    needs: build
    runs-on: self-hosted
    steps:
      - uses: actions/checkout@v3
      - uses: actions/download-artifact@v3
        with:
          name: compiled-jar
          path: target

      - name: Process retrieved files
        run: scripts/sign-gui.ps1 -input target/library.jar -output target/signature.asc

面临的问题

目前我已经得到了library.jar和分离式armored GPG签名文件signature.asc,但后续发布到Maven Central的工具都默认依赖maven-gpg-plugin完成签名+发布的全流程,我找不到让Maven直接使用外部生成的签名、继续完成发布的方法。

我需要明确:

  1. maven-gpg-plugin原则上是否支持使用外部生成的签名?
  2. 如果不支持,有哪些可行的替代方案?
  3. 有没有开源项目采用了类似的HSM签名方案(不暴露密钥),可以作为参考?

注:HSM是一种物理设备,用于安全存储密钥并执行签名、加密等操作,密钥由设备生成并内部存储,完全无法被复制导出,目的是避免密钥被盗用伪造签名发布恶意文件的风险。

内容的提问来源于stack exchange,提问作者ralien

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 09:41:12