Source Code Signieren

Was genau willst du machen?

‚Code Signing’ betrifft nicht den Source sondern das Binary. Dadurch wird dann sicher gestellt, dass die Software von Dir kommt.
 
Ich musste ein Gutachten erstellen lassen worin alle java Dateien mit einem MD5 hash wert versehen wurden . Zusätzlich die fertige exe Datei .... der Grund wenn die Java Dateien verändert werden stimmt der hash wert nicht mehr was klar ist .. nun dachte ich kann das in meiner neuen Version gleich automatisch einbinden
 
Warum sollen die Sourcen immer geprüft werden? Auf die wird ja nicht mehr zugegriffen .. die Dateien, die ausgeführt werden sollen, die müssen geprüft werden.

Die Sourcen müssten nur geprüft werden, wenn sie Verwendet werden sollen....
 
Also die Source Dateien anzupassen würde die Applikation nicht verändern. Aber man kann das ja mit in einpacken. Die Dateien könnten Teil des jar Files sein. Dann bleibt es bei einem selbst prüfen.

Wenn man statt md5 eine echte Signatur nehmen würde, dann wäre die Prüfung ggf vom System selbst gemacht aber benötigt ein Code Signing Zertifikat.

Aber auch ohne das kann sich beim Start eine jar Datei selbst prüfen, aber das bringt wenig, denn wenn ich die jar angreife, dann kann ich ja auch neue md5 Summen hinterlegen.... daher halte ich das mit den md5 Dateien für nicht wirklich zielführende.

Wenn die Applikation unter Windows läuft, dann könnte es ein Ziel sein, eine signierte exe zu haben... Aber das erfordert dann auch gewisse Dinge. Das Zertifikat muss sicher verwahrt werden. Das liegt dann sozusagen bei der Geschäftsführung im Safe. Und da hat dann auch nur eine sehr kleine Gruppe Zugriff drauf...

Bei großen Unternehmen gibt es ggf eine PKI Infrastruktur und die können ggf. ein Code Signing Zertifikat ausstellen - so die Applikation intern genutzt wird und das Root Zertifikat bekannt ist...
 
Da ich es noch nie mit Java gemacht habe, habe ich mal geschaut: Jar Files können signiert werden. Dazu ist wohl das Programm jarsigner da.

Im Programm selbst sollte dann eine Prüfung statt finden, die prüft ob alle Elemente signiert sind, die wichtig sind. Da findet sich z.B. unter
nützliche Codeteile und Informationen
 
Da ich es noch nie mit Java gemacht habe, habe ich mal geschaut: Jar Files können signiert werden. Dazu ist wohl das Programm jarsigner da.
Für mich mal an der Zeit, das auszuprobieren 😀 Ich "logge" hier mal mit.

Erstmal Self-Signed-Certificate ausstellen und im neuen Keystore ablegen:
Code:
keytool -genkey -keyalg RSA -alias selfsigned -keystore keystore.jks -storepass password -validity 360 -keysize 2048

Für das Zertifikat vergebe ich mal kein Passwort, dann mal ein beliebiges Jar (bzw. die Kopie davon...) signieren:
Code:
jarsigner -keystore keystore.jks -storepass password jpa.war selfsigned

OK, gibt Warnungen, da kein Timestamp-Server bzw. -Zertifikat angegeben wurde. Erstmal egal. Überprüfen:

Code:
jarsigner -keystore keystore.jks -storepass password -verify jpa.war
liefert
Code:
jar verified.

Warning: 
This jar contains signatures that does not include a timestamp. Without a timestamp, users may not be able to validate this jar after the signer certificate's expiration date (2021-05-31) or after any future revocation date.

Re-run with the -verbose and -certs options for more details
Schön. Jetzt mal eine Datei im Jar aktualisieren (WEB-INF/beans.xml habe ich zuvor angelegt):
Code:
jar uf jpa.war WEB-INF/beans.xml
Und nochmal prüfen
Code:
jarsigner -keystore keystore.jks -storepass password -verify jpa.war
spuckt
Code:
jarsigner: java.lang.SecurityException: SHA-256 digest error for WEB-INF/beans.xml
aus.

OK, die Warnungen stören noch, also nochmal mit TSA probieren:
Code:
jarsigner -keystore keystore.jks -storepass password -tsa https://www.freetsa.org/tsr jpa.war selfsigned
und schon sind auch die Warnungen weg.

Wenn man eine Datei nicht verändert, sondern dem Jar hinzufügt, gibt es eine Warnung:
Code:
jar verified.

Warning: 
This jar contains unsigned entries which have not been integrity-checked. 

Re-run with the -verbose and -certs options for more details.
Mit -verbose erhält man dann die komplette Dateiliste mit Flags, anhand derer man erkennt, ob eine Datei signiert wurde.

Fazit: einfache Angelegenheit.
 

Zurück
Oben