如何使用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直接使用外部生成的签名、继续完成发布的方法。
我需要明确:
- maven-gpg-plugin原则上是否支持使用外部生成的签名?
- 如果不支持,有哪些可行的替代方案?
- 有没有开源项目采用了类似的HSM签名方案(不暴露密钥),可以作为参考?
注:HSM是一种物理设备,用于安全存储密钥并执行签名、加密等操作,密钥由设备生成并内部存储,完全无法被复制导出,目的是避免密钥被盗用伪造签名发布恶意文件的风险。
内容的提问来源于stack exchange,提问作者ralien
相关产品推荐
相关产品推荐

