Jar-bestanden, ook wel Java-archieven genoemd, worden gebruikt om verschillende Java-klassebestanden en de bijbehorende gegevens in één bestand te ordenen. Ze spelen een essentiële rol bij de distributie van Java-programma's en zorgen voor een moeiteloze distributie en werking op verschillende platforms. Het ondertekenen van Jar-bestanden om hun geldigheid en integriteit te garanderen, is een belangrijk aspect van de distributie van Java-programma's. Dit is met name cruciaal voor de beveiliging van webgebaseerde applicaties en het waarborgen van de betrouwbaarheid van bibliotheken van derden. De JarSigner-tool wordt hiervoor meegeleverd met de Java Development Kit (JDK).
JarSigner maakt een handtekeningbestand aan voor het oorspronkelijke JAR-bestand. Dit handtekeningbestand bevat de cryptografische hashes van alle inhoud van het JAR-bestand. Vervolgens gebruikt de tool een digitaal handtekeningalgoritme om een tweede handtekeningbestand (RSA ) te genereren. Deze twee handtekeningbestanden, samen met de oorspronkelijke bestanden, worden in het JAR-bestand bewaard. Tijdens het verificatieproces extraheert JarSigner het oorspronkelijke JAR-bestand en de bijbehorende handtekeningbestanden. De hashwaarden van het oorspronkelijke JAR-bestand worden vervolgens berekend en vergeleken met de waarden in het handtekeningbestand. Het JAR-bestand wordt als legitiem en betrouwbaar beschouwd als de hashwaarden overeenkomen. Anders wordt het JAR-bestand als ongeldig beschouwd en kan het niet worden uitgevoerd.
Het toevoegen van een digitale handtekening vergemakkelijkt de verificatie van de oorsprong en identiteit van JAR-bestanden. Cryptografische algoritmen spelen een belangrijke rol bij het waarborgen van robuuste bescherming door geavanceerde wiskundige technieken te implementeren in het ondertekeningsproces. Er bestaan verschillende methoden voor het ondertekenen van JAR-bestanden. Hieronder vindt u een beknopt overzicht van de verschillende benaderingen.
JAR-bestanden ondertekenen met de JarSigner-tool
In dit gedeelte wordt beschreven hoe u JAR-bestanden kunt ondertekenen met de JarSigner-tool. Java moet geïnstalleerd zijn om dit te kunnen gebruiken. Download en installeer Java via https://www.oracle.com/java/technologies/downloads . Er zijn verschillende manieren om JarSigner te gebruiken: met de CodeSign Secure KSP , via de opdrachtprompt , via de Eclipse IDE of via een Jenkins-pipeline.
Met CodeSign Secure KSP
- Navigeer naar de Java JDK-installatie en ga naar de map bin (meestal te vinden in C:\Program Files\Java\jdk-20\bin). Daar vindt u de JarSigner-applicatie "Jasigner.exe".
- U kunt de toepassing naar de opdrachtregel slepen om het pad te achterhalen, of u kunt eenvoudig naar de map navigeren met de opdracht cmd.
- In cmd specificeren we eerst ons winkeltype, dit doen we met behulp van -storetype Windows-My. Hier komt onze KSP in beeld.
- Geef het ondertekeningsalgoritme op met: sigalg SHA256 met RSAU kunt elk gewenst ondertekeningsalgoritme gebruiken.
- Specificeer tijdstempelserver: –tsa http://timestamp.digicert.com
- Geef aan welk JAR-bestand u wilt ondertekenen.
- Geef de sleutelalias van het certificaat op.
Al met al ziet de opdracht er ongeveer zo uit: deze moet worden uitgevoerd vanuit de directory waar JarSigner Application zich bevindt.
-storetype Windows-Mijn -sigalg SHA256withRSA -tsa http://timestamp.digicert.com C:\Gebruikers\ja785\Bureaublad\test.jar “evcodesigning”

We kunnen Jar Signer Verifier uitvoeren om te controleren of de Jar-bestanden zijn ondertekend.
Dit gebeurt in dezelfde directory als die van de ondertekenaar en met behulp van de onderstaande opdracht.
-verifiëren

Met opdrachtprompt
Hieronder vindt u een lijst met de beschikbare opdrachtparameters en een korte uitleg van hun functies.
| -s of –teken | JAR-bestand moet worden ondertekend. |
| -v of –verifiëren | JAR-bestand moet geverifieerd worden. |
| -c of –cert-pad | Pad naar certificaatbestand. |
| -u of –gebruiker | Gebruikersnaam. Een gebruikersnaam op de server van Encryption Consulting. |
| -k of –key | Sleutel voor ondertekening/verificatie geleverd door de server van Encryption Consulting. |
| -a of –algoritme | Algoritme dat gebruikt moet worden voor ondertekening/verificatie. Een van de onderstaande opties moet gebruikt worden: SHA-256 SHA-384 SHA-512 |
| -o of –uitvoer | Geef het uitvoerbestand het pad als het ondertekende bestand. |
| -h of –help | Help |
| -versie | Versienummer weergeven |
| - Verbaal | Debuglogs weergeven |
Om een jar-bestand te ondertekenen met JarSigner, opent u eerst een beheerdersopdrachtprompt en voert u deze opdracht in:
cd C:\Gebruikers\Beheerder\Bureaublad\JarSigner-main (1)\JarSigner-main\JarSignerAgent\doel
Het commando om te ondertekenen is als volgt, onthoud de inhoud in zijn voorbeeldinvoergegevens, u moet de specifieke bestandsnamen en paden opgeven:
java -classpath .;jarsigner-jar-met-afhankelijkheden.jar;”C:\Program Files\Java\jdk1.8.0_202\lib\tools.jar” com.security.SignerMain -s “
De verwachte output is als volgt:

Om een jar-bestand te verifiëren met JarSigner, voert u de volgende opdracht in:
java -classpath .;jarsigner-jar-met-afhankelijkheden.jar;”C:\Program Files\Java\jdk1.8.0_202\lib\tools.jar” com.security.SignerMain -v “
De verwachte output is als volgt:

Met Eclipse (Maven Project)
Om een JAR-bestand te ondertekenen met de Eclipse IDE, moet je eerst Eclipse installeren.
- Wanneer de installatiewizard verschijnt, selecteert u Eclipse IDE voor Java Developers en klikt u op Installeren.

- Zorg ervoor dat het bestand CodeSignerAgent.zip is uitgepakt. Klik vervolgens in de Eclipse-gebruikersinterface linksboven in het venster op 'Importeren'.

- Selecteer vervolgens Bestaande Maven-projecten importeren.

- Selecteer vervolgens de map CodeSignerAgent in de browser, zoals hieronder weergegeven:

- Maak vervolgens een JDK-bibliotheek aan door op 'Projectbibliotheek' te klikken. Selecteer JDK 1.8 als bibliotheekpad. Installeer JDK 1.8 indien niet beschikbaar.
Referentie: https://www.oracle.com/in/java/technologies/javase/javase8-archive-downloads.html


- Voeg deze JDK-bibliotheek toe aan de projectbibliotheek. Verwijder de JRE-bibliotheek.

- Open vervolgens het projectbestand pom.xml en wijzig het JDK 1.8-pad naar uw computer.

- Klik vervolgens met de rechtermuisknop op het project en selecteer Uitvoeren als: Maven installeren

- Hieronder wordt weergegeven of de build succesvol is en in de doelmap van het project wordt JarSigner.jar aangemaakt.


Jenkins-pijpleiding
Het gebruik van JarSigner in een pipeline kan nuttig zijn om potentiële updates en nieuwe builds te testen. Het JarSigner-project is vooraf geconfigureerd op het Jenkins-dashboard.
Om in te loggen, opent u een webbrowser (bij voorkeur Google Chrome) en typt u http://localhost:8080/ om toegang te krijgen tot het Jenkins-dashboard.

Hier kunt u alle builds en algemene informatie erover bekijken.
Volg de onderstaande stappen in het Jenkins Dashboard:
- Klik op Nieuw item op het Dashboard.

- Voer een naam voor het item in en klik op Freestyle Project en klik op OK.

- Op de configuratiepagina kunt u onder Algemeen een omschrijving naar wens invullen.

Hier wordt de JarSigner-code uitgevoerd. Door een buildstap toe te voegen die een Windows-batchopdracht uitvoert, kunnen we de JarSigner-code aanroepen en via de Jenkins-pipeline uitvoeren.

Sla alle wijzigingen op door onderaan op ' Opslaan' te klikken.
Nadat je de wijzigingen hebt opgeslagen, klik je op 'Nu bouwen'. Je ziet dan een buildnummer op je scherm verschijnen. Voor meer informatie over de bouwstappen en algemene bouwinstellingen kun je op 'Configureren' klikken naast de knop 'Nu bouwen'.

Klik linksonder in de knoppenlijst op de pijl omhoog bij 'Buildgeschiedenis' om de meest recente builds van het project te bekijken. Selecteer de meest recente build en u ziet de pagina met buildinformatie. Om de uitvoer van de build te bekijken, klikt u op de knop 'Console-uitvoer' aan de linkerkant van het scherm.

Je kunt de console-uitvoer ook in platte tekst bekijken door op 'Weergeven als platte tekst' onder de knop 'Console-uitvoer' te klikken . Zoals hieronder te zien is, voert deze build de JarSigner uit.

Conclusie
Concluderend is het begrijpen van de concepten van het ondertekenen van JAR-bestanden en het gebruik van de 'JAR Signer'-tool essentieel voor zowel Java-ontwikkelaars als -gebruikers. Door deze functionaliteit te benutten, kunnen de beveiliging en betrouwbaarheid van hun applicaties worden verbeterd, waardoor ze worden beschermd tegen mogelijke manipulatie en de betrouwbaarheid van bibliotheken van derden wordt gewaarborgd. Aangezien de beveiliging van webgebaseerde applicaties een prioriteit blijft, is het van onschatbare waarde om vertrouwd te raken met het proces van het ondertekenen van JAR-bestanden om voorop te blijven lopen in dit snel veranderende landschap.
Encryption Consulting begrijpt de noodzaak om bestanden en applicaties te ondertekenen in dit digitale tijdperk. Ons platform voor codeondertekening, CodeSign Secure , toont onze toewijding aan beveiliging. We bieden het genereren van handtekeningen met behulp van hardwarebeveiligingsmodules , samen met hashing aan de clientzijde en virusscanning. Wij zetten ons in voor uw veiligheid en staan klaar om u te voorzien van de informatie en tools die u nodig hebt om de zaken die voor u het belangrijkst zijn te beveiligen. Ga naar www.encryptionconsulting.com voor meer informatie over onze producten of om een demo van CodeSign Secure aan te vragen.
