27

ビルドサーバー上に構築されたいくつかのmavenプロジェクトがあります。場合によっては、成果物に署名したいことがあります。そのためにMaven Jarsigner Pluginを使用します。

次の質問に直面しています。

  • 署名用のパスワードはどこに保存する必要がありますか?
  • Maven プロジェクトに署名するための良い戦略は何ですか?

キーストアをサーバーのどこかに置いて、そのパスをハードコードしたくはありません。そのため、このキーストアを jar にラップし、アーティファクトとして内部の Maven リポジトリにアップロードしました。Maven プロジェクトに署名する場合は、 Maven Dependency Pluginを使用してキーストア アーティファクトをダウンロードし、maven ビルド ライフサイクルに署名目標を添付します。詳しい情報はこちら。

pom.xmlキーストアのパスワードを隠すために、それらを企業ファイルに入れました。settings.xmlまた、ビルド サーバーにパスワードを保存することも考えています。

プロジェクトが開発者のマシンでビルドおよび署名されると、自己署名証明書で署名されます。しかし、プロジェクトがビルド サーバー上でビルドおよび署名されると、"公式" 証明書で署名されます。

それは良い戦略ですか?

4

1 に答える 1

33

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 を呼び出します。また、プロファイルを使用するようにmaven-release-pluginを構成しました。codesigning

settings.xml実際には、あなた以外の誰もがファイルを読み取れない限り、パスワードを保存することは可能です。

于 2010-09-01T17:22:07.697 に答える