質問

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

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

  • 署名のためにパスワードをどこに保存すればよいですか?
  • Mavenプロジェクトに署名するための良い戦略は何ですか?

キーストアをサーバーのどこかに配置し、ハードコードにパスを配置したくありません。そのため、このキーストアを瓶に包み、内側のメイベンリポジトリのアーティファクトとしてアップロードしました。 Mavenプロジェクトに署名したい場合は、キーストアアーティファクトを使用してダウンロードします。 Maven Dependencyプラグイン 署名の目標を添付して、ライフサイクルを構築します。 ここ より詳細な情報です。

キーストアのパスワードを非表示にするために、私たちはそれらを私たちの企業に入れました 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 私はaを定義しました 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>

実際の証明書に署名したいときは、Mavenを呼び出します -Pcodesigning -Dkeystore.password=strongPassword パラメーター。また、を構成しました Maven-Release-Plugin 使用するには codesigning プロフィール。

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top