我们有几个Maven项目,这些项目是在构建服务器上构建的。在某些情况下,我们想签署我们的可交付成果。我们用 Maven Jarsigner插件 要做到这一点。

我们面临以下问题:

  • 我们应该在哪里存储签名密码?
  • 签署Maven项目的好策略是什么?

我们不想将密钥库放在服务器上的某个位置,也不想将其进行硬编码。因此,我们只是将这个密钥库包裹在一个罐子里,然后将其作为工件上传到我们内部的Maven存储库中。当我们想签署一个Maven项目时,我们使用使用 Maven依赖插件 并将签名目标附加到Maven建立生命周期。 这里 是更详细的信息。

为了隐藏密钥库的密码,我们将其放入公司中 pom.xml 文件。我们还考虑将密码存储在 settings.xml 在构建服务器上。

当项目在开发人员机器上构建和签名时,我们将使用自签名证书签名。但是,当项目在构建服务器上构建和签名时,我们将使用“官方”证书签名。

这是一个好策略吗?

有帮助吗?

解决方案

我使用2家密钥库:

  • 一个存储在SCM中的开发密钥库。因此,CI服务器可以签署快照。
  • 由可信赖的认证机构颁发的带有实际生产证书的生产密钥库。

开发密钥库密码在 pom.xml. 。这是我的片段 pom.xml:

  <plugin>
    <artifactId>maven-jarsigner-plugin</artifactId>
    <version>1.2</version>
    <configuration>
      <storetype>${keystore.type}</storetype>
      <keystore>${keystore.path}</keystore>
      <alias>${keystore.alias}</alias>
      <storepass>${keystore.store.password}</storepass>
      <keypass>${keystore.key.password}</keypass>
    </configuration>
  </plugin>
  <!-- 
      ... rest of the pom.xml ...
  -->
  <properties>
    <keystore.path>cert/temp.keystore</keystore.path>
    <keystore.type>JKS</keystore.type>
    <keystore.alias>dev</keystore.alias>
    <keystore.password>dev_password</keystore.password>
    <keystore.store.password>${keystore.password}</keystore.store.password>
    <keystore.key.password>${keystore.password}</keystore.key.password>
  </properties>

~/.m2/settings.xml 我定义了一个 codesgining 轮廓:

<settings>
  <profiles>
    <profile>
      <id>codesigning</id>
      <properties>
        <keystore.path>/opt/prod/prod.keystore</keystore.path> 
        <keystore.alias>prod</keystore.alias>
        <keystore.type>JKS</keystore.type>
        <keystore.store.password>${keystore.password}</keystore.store.password>
        <keystore.key.password>${keystore.password}</keystore.key.password>
      </properties>
    </profile>
  </profiles>
</settings>

当我想签署真实证书时,我用 -Pcodesigning -Dkeystore.password=strongPassword 参数。我还配置了 maven-release-plugin 使用 codesigning 轮廓。

实际上可以将密码存储在 settings.xml 只要您的文件是可以读取的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top