Frage

Wir haben mehr Maven-Projekte, die auf dem Build-Server aufgebaut werden. In einigen Fällen wollen wir unsere Leistungen unterzeichnen. Wir verwenden Maven Plugin jarsigner , das zu tun.

Wir stellen uns die folgenden Fragen:

  • Wo sollen wir speichern die Passwörter für die Anmeldung?
  • Was ist eine gute Strategie für maven Projekte Unterzeichnung?

Wir wollen nicht unsere Schlüsselspeicher irgendwo auf unseren Servern setzen und hart codieren, einen Weg zu ihm. Also haben wir nur diese Schlüsselspeicher in einem Glas eingewickelt und es als ein Artefakt zu unserem inneren Maven-Repository hochgeladen. Wenn wir ein Maven-Projekt anmelden möchten, laden wir die Schlüsselspeicher Artefakt mit dem Maven Dependency Plugin und befestigen Unterzeichnung Ziel maven Build Lebenszyklus. Hier Ausfhrlicher Informationen.

Um die Passwörter für den Schlüsselspeicher zu verstecken, wir setzen sie in unser Unternehmen pom.xml Datei. Wir denken auch über Passwörter in settings.xml auf dem Build-Server zu speichern.

Wenn ein Projekt erstellt wird und auf einer Entwicklermaschine unterzeichnet, melden wir es mit selbst signierten Zertifikat. Aber als Projekt gebaut wird und auf einem Build-Server signiert, wir unterschreiben mit unserem „offiziellen“ Zertifikat.

Ist es eine gute Strategie?

War es hilfreich?

Lösung

Ich verwende 2 Schlüsselspeicher:

  • eine Entwicklung, die Schlüsselspeicher im SCM gespeichert ist. Der CI-Server kann somit die Schnappschüsse unterschreiben.
  • eine Produktion Schlüsselspeicher mit einem realen Produktions Zertifikat von einer vertrauenswürdigen Zertifizierungsstelle ausgestellt.

Das Passwort Entwicklung Schlüsselspeicher ist in der pom.xml. Hier ist ein Ausschnitt meiner 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>

In ~/.m2/settings.xml ich ein codesgining Profil definiert:

<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>

, wenn ich die reale Zertifikat signieren möchte ich mit den -Pcodesigning -Dkeystore.password=strongPassword Parameter invoke maven. Ich baute auch die Maven-Release-Plugin die codesigning verwenden Profil.

Eigentlich ist es möglich, das Passwort in settings.xml so lange zu speichern, wie die Datei, die von niemandem lesbar ist, aber Sie.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top