JAR-Dateien, auch Java-Archive genannt, dienen dazu, mehrere Java-Klassendateien und die zugehörigen Daten in einer Datei zusammenzufassen. Sie spielen eine wesentliche Rolle bei der Verteilung von Java-Programmen und ermöglichen deren problemlose Verteilung und Nutzung über mehrere Plattformen hinweg. Das Signieren von JAR-Dateien zur Gewährleistung ihrer Gültigkeit und Integrität ist ein wichtiger Aspekt bei der Verteilung von Java-Programmen. Dies ist insbesondere für den Schutz webbasierter Anwendungen und die Gewährleistung der Zuverlässigkeit von Drittanbieterbibliotheken entscheidend. Zu diesem Zweck stellt das Java Development Kit (JDK) das Tool JarSigner zur Verfügung.
Der JarSigner erstellt eine Signaturdatei für die ursprüngliche Jar-Datei. Diese Signaturdatei enthält die kryptographisch Hashes aller Inhalte der Jar-Datei. Das Tool verwendet dann eine Digitale Unterschrift Algorithmus zum Erstellen einer zweiten Signaturdatei (RSA). Diese beiden Signaturdateien werden zusammen mit den ursprünglichen Dateien in der Jar-Datei gespeichert. Der JarSigner extrahiert während des Überprüfungsprozesses die ursprüngliche Jar-Datei und die zugehörigen Signaturdateien. Anschließend werden die Hashwerte der ursprünglichen Jar-Datei berechnet und mit den in der Signaturdatei gespeicherten Werten verglichen. Die Jar-Datei gilt als legitim und vertrauenswürdig, wenn die Hashwerte übereinstimmen. Andernfalls wird die Jar-Datei als ungültig betrachtet und kann nicht ausgeführt werden.
Das Hinzufügen einer digitalen Signatur erleichtert die Überprüfung der Herkunft und Identität von Jar-Dateien. Kryptografische Algorithmen spielen eine wichtige Rolle bei der Gewährleistung eines robusten Schutzes, indem sie fortschrittliche mathematische Techniken in den Signaturprozess integrieren. Es gibt verschiedene Methoden zum Signieren von Jar-Dateien. Im Folgenden finden Sie einen kurzen Überblick über die verschiedenen Ansätze.
Signieren Sie Jar-Dateien mit dem JarSigner-Tool
Dieser Abschnitt beschreibt, wie Sie JAR-Dateien mit dem Tool JarSigner signieren. Java muss dafür installiert sein. Laden Sie Java herunter und installieren Sie es von https://www.oracle.com/java/technologies/downloads. Es gibt verschiedene Möglichkeiten, JarSigner zu verwenden: mit dem CodeSign Secure KSP, Eingabeaufforderung, Durch die Eclipse-IDEoder durch a Jenkins-Pipeline.
Mit CodeSign Secure KSP
- Navigieren Sie zur JDK-Installation von Java und öffnen Sie den Bin-Ordner (normalerweise unter C:\Programme\Java\jdk-20\bin). Dort finden Sie die JarSigner-Anwendung „Jasigner.exe“.
- Sie können die Anwendung in die Befehlszeile ziehen, um ihren Pfad abzurufen, oder einfach mit der Befehlstaste zu diesem Ordner navigieren.
- In cmd geben wir zunächst unseren Store-Typ an. Dies tun wir mit -storetype Windows-My. Hier kommt unser KSP ins Spiel.
- Geben Sie den Signaturalgorithmus an mit: sigalg SHA256 mit RSA. Sie können jeden beliebigen Signaturalgorithmus verwenden.
- Zeitstempelserver angeben: –tsa http://timestamp.digicert.com
- Geben Sie die Jar-Datei an, die Sie signieren möchten.
- Geben Sie den Schlüsselalias des Zertifikats an.
Insgesamt sieht der Befehl ungefähr wie folgt aus. Er muss aus dem Verzeichnis ausgeführt werden, in dem sich die JarSigner-Anwendung befindet.
-storetype Windows-My -sigalg SHA256withRSA -tsa http://timestamp.digicert.com C:\Benutzer\ja785\Desktop\test.jar „evcodesigning“

Wir können den Jar Signer Verifier ausführen, um zu überprüfen, ob die Jar-Dateien signiert wurden oder nicht.
Dies geschieht im selben Verzeichnis wie das des Unterzeichners und mit dem folgenden Befehl.
-verifizieren

Mit Eingabeaufforderung
Nachfolgend finden Sie eine Liste der verfügbaren Befehlsparameter und eine kurze Erklärung ihrer Funktionen.
| -s oder –sign | Zu signierende Jar-Datei. |
| -v oder –verify | Zu überprüfende Jar-Datei. |
| -c oder –cert-path | Pfad der Zertifikatsdatei. |
| -u oder –user | Benutzername. Ein Benutzername auf dem Encryption Consulting-Server. |
| -k oder –key | Schlüssel zum Signieren/Verifizieren, bereitgestellt vom Encryption Consulting-Server. |
| -a oder –algorithm | Für die Signierung/Verifizierung zu verwendender Algorithmus. Eine der folgenden Optionen muss verwendet werden: SHA-256 SHA-384 SHA-512 |
| -o oder –output | Ausgabedatei im Pfad als signierte Datei. |
| -h oder –help | Hilfe |
| -Ausführung | Versionsnummer anzeigen |
| –Verbose | Debugging-Protokolle anzeigen |
Um eine JAR-Datei mit JarSigner zu signieren, öffnen Sie zunächst eine Administrator-Eingabeaufforderung und geben Sie diesen Befehl ein:
cd C:\Benutzer\Administrator\Desktop\JarSigner-main (1)\JarSigner-main\JarSignerAgent\target
Der zu unterzeichnende Befehl lautet wie folgt. Denken Sie an den Inhalt in sind Beispieleingaben. Sie müssen die spezifischen Dateinamen und Pfade angeben:
java -classpath .;jarsigner-jar-with-dependencies.jar;”C:\Programme\Java\jdk1.8.0_202\lib\tools.jar” com.security.SignerMain -s “
Die erwartete Ausgabe ist wie folgt:

Um eine JAR-Datei mit JarSigner zu verifizieren, geben Sie diesen Befehl ein:
java -classpath .;jarsigner-jar-with-dependencies.jar;”C:\Programme\Java\jdk1.8.0_202\lib\tools.jar” com.security.SignerMain -v “
Die erwartete Ausgabe ist wie folgt:

Mit Eclipse (Maven-Projekt)
Um eine JAR-Datei mit der Eclipse IDE zu signieren, müssen Sie zunächst installieren Eclipse.
- Wenn Sie vom Installationsassistenten begrüßt werden, wählen Sie „Eclipse IDE für Java-Entwickler“ aus und klicken Sie auf „Installieren“.

- Stellen Sie sicher, dass die Datei CodeSignerAgent.zip entpackt ist. Klicken Sie dann in der Eclipse-Benutzeroberfläche oben links im Fenster auf „Importieren“.

- Wählen Sie dann „Vorhandene Maven-Projekte importieren“ aus.

- Wählen Sie dann das CodeSignerAgent-Verzeichnis im Browser aus, wie unten gezeigt:

- Erstellen Sie anschließend eine JDK-Bibliothek, indem Sie auf „Projektbibliothek“ klicken. Wählen Sie JDK 1.8 als Bibliothekspfad. Falls JDK 1.8 nicht verfügbar ist, installieren Sie es bitte.
Referenz: https://www.oracle.com/in/java/technologies/javase/javase8-archive-downloads.html


- Fügen Sie diese JDK-Bibliothek zur Projektbibliothek hinzu. Entfernen Sie die JRE-Bibliothek.

- Öffnen Sie dann die Projektdatei pom.xml und ändern Sie den JDK 1.8-Pfad entsprechend Ihrem Computer.

- Klicken Sie dann mit der rechten Maustaste auf das Projekt und wählen Sie „Ausführen als“: Maven-Installation

- Unten wird der erfolgreiche Build angezeigt und im Zielordner des Projekts wird JarSigner.jar erstellt.


Jenkins-Pipeline
Die Verwendung von JarSigner in einer Pipeline kann nützlich sein, um potenzielle Updates und neue Builds zu testen. Das JarSigner-Projekt ist im Jenkins-Dashboard vorkonfiguriert.
Um sich anzumelden, öffnen Sie einen Webbrowser (vorzugsweise Google Chrome) und geben Sie http://localhost:8080/ um auf das Jenkins-Dashboard zuzugreifen.

Hier können Sie alle Builds und einige allgemeine Informationen dazu sehen.
Führen Sie im Jenkins-Dashboard die folgenden Schritte aus:
- Klicken Sie im Dashboard auf „Neues Element“.

- Geben Sie einen beliebigen Artikelnamen ein, klicken Sie auf „Freestyle-Projekt“ und dann auf „OK“.

- Geben Sie auf der Konfigurationsseite unter „Allgemein“ eine Beschreibung Ihrer Wahl ein.

Hier wird der JarSigner-Code ausgeführt, indem ein Build-Schritt zur Abwicklung, Integrierung, Speicherung und Führt einen Windows-Batch-Befehl aus wir können den JarSigner-Code aufrufen und ihn über die Jenkins-Pipeline ausführen.

Speichern Sie alle Änderungen, indem Sie auf Gespeichert an der Unterseite.
Klicken Sie nach dem Speichern auf „Jetzt erstellen“. Auf Ihrem Bildschirm wird eine Build-Nummer angezeigt. Weitere Informationen zu den Build-Schritten und allgemeinen Build-Einstellungen erhalten Sie, indem Sie auf Einrichtung neben der Schaltfläche „Jetzt erstellen“.

Klicken Sie links unten in der Schaltflächenliste auf den nach oben zeigenden Pfeil unter Build History, um die neuesten Builds des Projekts anzuzeigen. Wählen Sie den aktuellsten Build aus, um die Build-Informationsseite anzuzeigen. Um die Ausgabe des Builds anzuzeigen, klicken Sie auf das Konsolenausgabe Schaltfläche auf der linken Seite des Bildschirms.

Sie können die Konsolenausgabe auch im Nur-Text-Format anzeigen, indem Sie auf Als Nur-Text anzeigen unter dem Konsolenausgabe Schaltfläche. Wie unten gezeigt, führt dieser Build den JarSigner aus.

Fazit
Zusammenfassend lässt sich sagen, dass das Verständnis der Konzepte zum Signieren von Jar-Dateien und der Verwendung des „Jar Signer“-Tools für Java-Entwickler und -Anwender gleichermaßen wichtig ist. Durch die Nutzung dieser Funktionalität können Sie die Sicherheit und Zuverlässigkeit Ihrer Anwendungen verbessern, sie vor Manipulation schützen und die Vertrauenswürdigkeit von Drittanbieterbibliotheken sicherstellen. Da die Sicherheit webbasierter Anwendungen weiterhin oberste Priorität hat, ist es von unschätzbarem Wert, sich mit dem Signieren von Jar-Dateien vertraut zu machen, um in dieser sich schnell entwickelnden Landschaft die Nase vorn zu behalten.
Verschlüsselungsberatung versteht die Notwendigkeit, Dateien und Anwendungen im digitalen Zeitalter zu signieren. Unsere Code-Signatur-Plattform, CodeSign Secure, zeigt unser Engagement für Sicherheit. Wir bieten Signaturgenerierung mit Hardware-Sicherheitsmodule, zusammen mit clientseitiges Hashing und Virenscans. Ihre Sicherheit liegt uns am Herzen und wir sind hier, um Sie mit den Informationen und Tools auszustatten, die Sie benötigen, um die Dinge zu schützen, die Ihnen am wichtigsten sind. Besuchen Sie www.encryptionconsulting.com um mehr über unsere Produkte zu erfahren oder eine CodeSign Secure-Demo zu buchen.
