Seltsamer Fehler beim signieren von Applets

Angiii

Erfahrenes Mitglied
Hallo,

ich habe ein (für mich) mysteriöses Problem, was mir schon seit Tagen Kopfzerbrechen bereitet.

Ich habe ein Java Applet, welches u.a. einen FileChooser implementiert hat. Da dieser natürlich die nötigen Rechte braucht, um auf den PC zugreifen zu können, habe ich das Applet signiert. Das war vor einem Monat und funktionierte auch sehr gut.

In der Zwischenzeit hatte ich dann an anderen Baustellen weiterprogrammiert. Heute wollte ich den FileChooser wieder mal testen, dieser funktionierte jedoch nicht. Es kam eine Security Exception welche auf eine fehlende Signierung hindeutet - dabei hatte ich das Applet jedoch signiert! Auch die Sicherheitsanfrage beim starten des Applets war nicht mehr da. Eine neue Generierung des jar-Files und der Signierung brachten nichts.

Das einzige was mir aufgefallen ist, ist, dass ich zwischenzeitlich meine verwendete JDK-Version gewechselt hatte. Am Anfang hatte ich aus Versehen in Eclipse noch die Version 1.4 eingestellt und bin erst später zu 6.0 gewechselt, als ich einige Funktionen vermisste. Aber ob das gleich dazu führt, dass meine Applets nicht mehr signiert werden können? Ich bin wirklich ratos, es hatte doch vorher alles so schön funktioniert.

Vielen Dank im Voraus für Eure Hilfe!

P.S.: An meinen Browsersicherheitseinstellungen liegt es leider auch nicht. Hatte das an mehreren PC getestet.
 
Moin,

ich habe hier in der Firma für meine Anwendung am Freitag auch den Wechsel von Java 1.4 auf 1.5 vorgenommen!

Dabei musste ich dann auch den Speicherort für die Keystore-Datei entsprechend anpassen (ich compiliere mit ANT über build.xml).

Vielleicht kannst Du das ja mal bei Dir prüfen - weitere Idee hätte ich auch nicht!

Gruß
Klaus
 
Danke für deine Antwort! Was meinst du mit "Speicherort für die Keystore-Datei"? Ich dachte es wär egal wo die Datei ist?

Ich selbst siginiere über eine einfache Batchdatei, welche u.a. "keytool" aufruft, dort die entsprechenden Parameter definiert und zum Schluss eine signierte Jar-Datei liefert.
 
Hallo,

ah, ok - das ist dann eine etwas andere Art der Signierung (die ich allerdings nur von Hörensagen kenne) :rolleyes:

Hierzu nur zwei kleine Tipps, mit denen Du Dich vielleicht da einarbeiten kannst :

keytool wird zur Vewaltung von privaten und öffentlichen Schlüsseln sowie Zertifikaten verwendet
http://www.dpunkt.de/java/Anhang/Tools/19.html

jarsigner ist ein Programm, das es ermöglicht, JAR-Dateien mit einer digitalen Signatur zu versehen
http://www.dpunkt.de/java/Anhang/Tools/20.html

Prüfe und/oder poste mal den Inhalt Diener Batchdatei, vielleicht läuft dort ja etwas falsch!

Gruß
Klaus
 
Meine Batch-Methode basiert imho auf dem was auf http://www.dpunkt.de/java/Anhang/Tools/19.html beschrieben wird.
Hier ist mal meine Batch-Datei. Ist nicht perfekt, funktionierte aber vorher relativ zuverlässig und schnell. Wobei ich anderen Signiermethoden natürlich offen gegenübersteh, hauptsache es läuft zum schluss irgendwie.

Code:
@echo off

echo  SignTool 

rem Pfad zum SDK
set path=.;C:\Programme\Java\jdk1.6.0_10\bin

echo Manifest-Version: 1.0>manifest.mf
echo.>>manifest.mf

if exist *.jar goto key
echo jar-Datei mit angegebenen Parametern erzeugen...
jar cfmv MeinJar.jar manifest.mf *.class

:key
keytool -genkey -alias Signer -dname "cn=Ich GmbH, c=de"

rem -validity 18250 (365 Tage x 50) erzeugt ein 50 Jahre gültiges Zertifikat
keytool -selfcert -validity 3650 -alias Signer -dname "cn=Ich GmbH, c=de"

if not exist *.jar goto error

jarsigner MeinJar.jar Signer
jarsigner -verify -verbose -certs MeinJar.jar
goto end

:error
echo.
echo Es wurde keine jar-Datei zum Signieren gefunden.

:end
if not exist manifest.mf goto console
echo.
rem Manifest von Festplatte löschen
del manifest.mf

:console
rem Console für Ausgaben noch geöffnet lassen
echo.
pause
 
Hallo,

was mich ein wenig irrtiert, ist die Zeile
rem -validity 18250 (365 Tage x 50) erzeugt ein 50 Jahre gültiges Zertifikat
keytool -selfcert -validity 3650 -alias Signer -dname "cn=Ich GmbH, c=de"
Wenn das Zertifikat wirklich 50 Jahre gültig ist, warum wird es dann jedesmal aufgerufen

Habe mal ein wenig gegoogelt, das mich das Thema auch interessiert und bin auf folgende Seiten gestoßen, die ich ganz interessant finde (weniger für mich, aber vlt. für Dich) :

http://www.torsten-horn.de/techdocs/ssl.htm (hier speziell Abschnitt 2.5)
oder
http://www.molehillrocker.com/tutorials/2-java-tutorials/3-signieren-einer-jar-datei

Gruß
Klaus
 
Das Zertifikat wird nicht jedesmal aufgerufen. Es wird mit Hilfe der Batch-Datei einmal auf einen bestimmten Zeitraum festgelegt und kann gilt dann entsprechend lange für die Java-Applikation.

Hab mir eure Links angesehen und meine Batch-Datei an die dort beschriebenen Codes angepasst. Hat leider alles keinen Effekt, obwohls auf den Seiten zumindest gut beschrieben war.

Was mir jedoch noch aufgefallen ist:
Die Signatur funktoniert, wenn ich das Applet lokal in meinen Projektordner öffne. Sobald ich das ganze auf den Webserver lade, funktioniert es nicht mehr. An meinen Browsereinstellungen liegt es jedoch nicht. Ich habe das Projekt auf mehreren PCs getestet und überall war das selbe Problem. Außerdem zeigten andere Projekte mit einer älteren JDK das Phänomen nicht.
 
Oh Mann ich dreh echt langsam durch - ich kriegs einfach nicht hin. Die Anwendung von "keytool" und "jarsigner" funktioniert an sich. Es kommt als Rückmeldung, dass das Applet erfolgreich signiert wurde. Starte ich es dann, heißts wieder, dass die Signierung fehlt.
Hab mittlerweile mehrfach auch das JDK gewechselt. Ohne Erfolg. Wenn wenigstens eine vernüftige Fehlermeldung kommen würde...

Was für Alternativen habe ich zur Signierung mit jarsigner/keytool? Gibts da was?
 
Könnte eigentlich die Datei java.policy.applet was damit zu tun haben?
Die Datei wurde von Eclipse automatisch generiert und hat folgenden Inhalt:
Code:
/* AUTOMATICALLY GENERATED ON Tue Apr 16 17:20:59 EDT 2002*/
/* DO NOT EDIT */

grant {
  permission java.security.AllPermission;
};
 

Neue Beiträge

Zurück