© Excellent backgrounds/Shutterstock.com
Security mit Maven und dem Jarsigner-Plug-in

Der Autogrammjäger


Um in sicherheitskritischen Anwendungen die notwendige Kontrolle über die eingebrachten Artefakte zu behalten, lassen sich mit dem Build-Werkzeug Maven erstellte Bibliotheken kryptografisch signieren. Dieser Artikel zeigt, wie Zertifikate zu erstellen sind und wie mit diesen Zertifikaten anschließend Java-Archive im Build-Prozess signiert werden können.

Die Beweggründe, eigens erstellte Artefakte zu signieren, können zwar unterschiedlich motiviert sein, jedoch lassen sie sich üblicherweise auf die beiden Aspekte der Autorisierung und Authentifizierung reduzieren. Gerade für Unternehmen, die hohe Sicherheitsanforderungen an ihre Applikationen stellen müssen, ist der im Folgenden beschriebene Prozess eine einfache Möglichkeit, den geforderten Bestimmungen gerecht zu werden.

Für unsere Betrachtungen ist ein bereits mit Maven [1] realisierter Build Voraussetzung. Das Ausliefern der Artefakte übernimmt ein Repository-Server. Für die hier gezeigten Beispiele wurde auf die frei verfügbare Communityversion von Sonatype Nexus [2] zurückgegriffen, die auch als Docker Image bereitsteht. Mit einigen Anpassungen lässt sich der hier beschriebene Workflow auch auf andere Technologien wie Gradle und Artifactory adaptieren.

Beginnen wir mit den technischen Vorbereitungen und erzeugen zuerst mit dem Keytool aus dem Java SDK einen kryptografischen Schlüssel. Unter Linux ist dazu auf der Kommandozeile folgende Anweisung einzugeben: /usr/bin/keytool -keystore keystore.iks -genkey -alias together.

Für Windows ist lediglich der Pfad auf die Java-Installation anzupassen, in der das Keytool residiert. Das Keytool findet sich übrigens in der JRE- und SDK-Installation. Der Parameter keystore erzeugt den Dateinamen der erstellten Signatur. In unserem Fall lautet er key­store.jks und wird im Nutzerverzeichnis des angemeldeten Benutzers abgelegt. Als Alias geben wir together an. Für den Alias eignet sich üblicherweise der Projektname. Es besteht aber auch die Möglichkeit, alle Artefakte eines Unternehmens mit dem gleichen Schlüssel zu signieren. In diesem Fall ist der Unternehmensname eine gute Wahl für den Alias. Nach der Ausführung des beschriebenen Kommandos erwartet Key­tool zusätzliche Eingaben mit weiteren Informationen zum Aussteller. Abbildung 1 zeigt die gesamten Schritte in der Bash.

schulz_maven_1.tif_fmt1.jpgAbb. 1: Keystore braucht nach der Installation noch weitere Angaben

Nach der erfolgreichen Generierung des kryptografischen Schlüssels ist dieser in unserem Maven-Projekt abzulegen. Hierzu biet...

Exklusives Abo-Special

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang