# Applet Datei Zugriff



## flashdog (15. Aug 2008)

Hallo,
mir ist es gelungen mit einem Applet Datei zu downloaden (siehe code: http://www.java-forum.org/de/viewtopic.php?p=435943#435943 ), aber wo wird die Datei gespeichert oder wie kann der Benutzer fuer diese Datei einen anderen Pfad waehlen?

Viele Gruesse


----------



## dayaftereh (15. Aug 2008)

Hey

Also um dateien von einem applet auf den client rechner zu schreiben,muss du es signieren.

um dan eine pfad aus wahl zu machen,würde ich eine JFileChoose erstellen, damit kan der user dan einfach den weg wählen wo es geschrieben werden soll   :shock:


----------



## flashdog (16. Aug 2008)

Danke fuer den Tip. 

Wenn ich das Applet signiert habe muss der Benutzer die Signatur sofort beim Start vom dem Applet akzeptieren oder erst wenn das Applet versucht z.B. auf die Festplatte zu schreiben?


----------



## L-ectron-X (16. Aug 2008)

Direkt nach dem Laden kommt die Abfrage, ob der Benutzer das Zertifikat akzeptiert und damit dem Applet erweiterte Rechte einräumt.
Ich hatte irgendwo im Forum noch ein funktionierendes Demo-Beispiel, nur finde ich es jetzt nicht...

Edit: Hier ist es: http://www.java-forum.org/de/viewtopic.php?t=70618


----------



## dayaftereh (16. Aug 2008)

hey

und hier noch mal was wie man ein applet signiert

www.java-forum.org/de/viewtopic.php?t=18083


----------



## flashdog (16. Aug 2008)

Danke fuer die den Link. Schade, dass es nicht moeglich ist das Zertifikat aufzrufen wenn wirklich schreib Zugriffe erfolgen werden.


----------



## dayaftereh (16. Aug 2008)

Ich glaube es gibt ne möglichkeit

aber die ist zimlich umstäntlich

Also du must zwei jar datein machen,in einer hast du dein normales applet und in der anderen jar datei ,die klassen um auf die cleint festplatte zu schrieben, ich habe das herausgefunden als ich mysql treiber mit ins applet geladen habe,die musste ich auch signieren, na ja vielicht ist das ja mal ne hilfe^^


----------



## flashdog (17. Aug 2008)

Danke fuer den tip.


----------



## flashdog (15. Sep 2008)

SignTool ( http://www.java-forum.org/de/viewtopic.php?t=18083 ) von L-ectron-X hat bei mir funktioniert, aber jetzt bekomme ich diese Fehlermeldung (keytool error: java.io.IOException: Keystore was tampered with, or password was
incorrect):
	
	
	
	





```
= SignTool =
Dieses Tool hilft beim Erzeugen von signierten jar-Dateien

Schritt 1: jar-Dateien erzeugen
-------------------------------
Manifestdatei erzeugen...
jar-Datei mit angegebenen Parametern erzeugen...
bilder : no such file or directory
etc : no such file or directory
added manifest
adding: ControlVariables.class(in = 410) (out= 272)(deflated 33%)
...

Schritt 2: Schluessel generieren
--------------------------------
Enter keystore password:
keytool error: java.io.IOException: Keystore was tampered with, or password was
incorrect

Schritt 3: Zertifikat erzeugen
------------------------------
Enter keystore password:
keytool error: java.io.IOException: Keystore was tampered with, or password was
incorrect

Schritt 4: jar-Datei signieren
------------------------------
jarsigner erwartet hier nochmals dein Passwort.
Enter Passphrase for keystore:
jarsigner error: java.lang.RuntimeException: keystore load: Keystore was tampere
d with, or password was incorrect

Schritt 5: Zertifikat testen
----------------------------

           0 Mon Sep 15 11:44:24 EST 2008 META-INF/
          61 Mon Sep 15 11:44:24 EST 2008 META-INF/MANIFEST.MF
         410 Mon Sep 15 11:40:40 EST 2008 ControlVariables.class
        ...

  s = signature was verified
  m = entry is listed in manifest
  k = at least one certificate was found in keystore
  i = at least one certificate was found in identity scope

jar is unsigned. (signatures missing or not parsable)


Press any key to continue . . .
```

und SignTool sieht wie folgt aus:
	
	
	
	





```
@echo off
rem * SignTool by L-ectron-X ( [url]www.byte-welt.de[/url] )
rem *
rem * Ablauf beim Signieren
rem *
rem * Erzeugen eines eigenen Schlüssels
rem * Mit KeyTool, einem Werkzeug aus dem SDK, einen neuen Schlüssel erzeugen:
rem * keytool -genkey -alias Signer -dname "cn=Dein Name, c=de"
rem * Gib anschließend Dein Passwort ein.
rem
rem * Erzeugen eines Zertifikats
rem * Mit KeyTool Zertifikat erzeugen:
rem * keytool -selfcert -alias Signer -dname "cn=Dein Name, c=de"
rem * Gib anschließend dein Passwort ein.
rem *
rem * Signieren des Applets
rem * Signieren des Applets mit Hilfe des Tools jarsigner
rem * jarsigner signed.jar Signer
rem * Und noch einmal dein Passwort eingeben.

echo = SignTool =
echo Dieses Tool hilft beim Erzeugen von signierten jar-Dateien
echo.
echo Schritt 1: jar-Dateien erzeugen
echo -------------------------------

rem Pfad zum SDK setzen
rem --> anpassen!
set path=.;C:\Program Files\Java\jdk1.6.0_04\bin
remset path=.;C:\Programme\Java\jdk1.6.0_06\bin

echo Manifestdatei erzeugen...
echo Manifest-Version: 1.0>manifest.mf
echo Created-by: SignTool by L-ectron-X>>manifest.mf

if exist *.jar goto key
echo jar-Datei mit angegebenen Parametern erzeugen...
rem --> anpassen!
rem * In diesem Beispiel werden alle .class-Dateien und die Verzeichnisse bilder und etc
rem * mit ins jar-Archiv gepackt.
jar cfmv MeinJar.jar manifest.mf *.class bilder etc

:key
echo.
echo Schritt 2: Schluessel generieren
echo --------------------------------
rem --> anpassen!
keytool -genkey -alias Signer -dname "cn=Name, c=de"

echo.
echo Schritt 3: Zertifikat erzeugen
echo ------------------------------
rem --> anpassen!
rem -validity 18250 (365 Tage x 50) erzeugt ein 50 Jahre gültiges Zertifikat
keytool -selfcert -validity 3650 -alias Signer -dname "cn=Name, c=de"

if not exist *.jar goto error
echo.
echo Schritt 4: jar-Datei signieren
echo ------------------------------
echo jarsigner erwartet hier nochmals dein Passwort.
rem --> anpassen!
jarsigner MeinJar.jar Signer

echo.
echo Schritt 5: Zertifikat testen
echo ----------------------------
rem --> anpassen!
jarsigner -verify -verbose -certs MeinJar.jar
goto end

:error
echo.
echo Es wurde keine jar-Datei zum Signieren gefunden.
echo Die Erzeugung der jar-Datei ist moeglicherweise fehlgeschlagen.
echo Pruefe deine Eingaben in der Batchdatei!

: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
```

Wie kann es sein dass das Passwort falsch ist wenn ich es nur einmal eingeben habe?


----------



## L-ectron-X (15. Sep 2008)

Genau dann, wenn schon ein Keystore existiert.
Du musst das Passwort aus dem bestehenden Keystore verwenden, oder wenn du es vergessen hast oder ein neues benutzen möchtest, den bestehenden Keystore löschen und ein neues Passwort verwenden/ausdenken.


----------



## flashdog (15. Sep 2008)

Ich habe das passwort vergessen und das jar gelöscht. Wo befindet sich der Keystore unter Windows/Linux und ist eine Datei die man einfach löschen kann?


----------



## L-ectron-X (15. Sep 2008)

Z.B. hier: http://www.java-forum.org/de/viewtopic.php?t=63453


----------



## Guest (15. Sep 2008)

Danke für den Link. In der zwischen Zeit habe ich eine Linux Version von deinem SignTool erzeugt, aber leider bekomme ich Fehler.
	
	
	
	





```
#!/bin/sh
#[url]http://tldp.org/LDP/abs/html/dosbatch.html[/url]
JAR_NAME="PMVClient"
OWNER_OF_CERTIFICATE="abc"
COUNTRY="de"
VALIDITY_OF_CERTIFICATE=3650 #In Days

createManifest(){
	echo "Create manifest.mf ..."
	echo "Manifest-Version: 1.0">manifest.mf
	echo "Created-by: AppletSignTool by flashdog">>manifest.mf
}

createJar(){
	echo "Create $JAR_NAME.jar"
	jar cfmv $JAR_NAME.jar manifest.mf *.class etc
}

generateKey(){
	echo "Generate Key..."
	echo keytool -genkey -alias Signer -dname \"CN=$OWNER_OF_CERTIFICATE, c=$COUNTRY\"
	keytool -genkey -alias Signer -dname \"cn=$OWNER_OF_CERTIFICATE, c=$COUNTRY\"
}

generateCertificate(){
	echo "Generate certificate..."
	keytool -selfcert -validity 3650 -alias Signer -dname \"cn=$OWNER_OF_CERTIFICATE, c=$COUNTRY\"
}

signJar(){
	echo "$JAR_NAME.jar signing..."
	jarsigner $JAR_NAME.jar Signer
}

checkCertificate(){
	echo "Certificate cheking..."
	jarsigner -verify -verbose -certs $JAR_NAME.jar
}

createManifest
createJar
generateKey
generateCertificate
signJar
checkCertificate

if [ -e manifest.mf ] 
then
	rm manifest.mf
fi
```

und die Fehler:
	
	
	
	





```
$ AppletSignTool.sh
Create manifest.mf ...
: Invalid argumente 9: manifest.mf
Create PMVClient.jar
etc : no such file or directory
added manifest
adding: ControlVariables.class(in = 410) (out= 272)(deflated 33%)
...
Generate Key...
keytool error: java.lang.RuntimeException: Usage error, c=de" is not a legal command
Generate certificate...
keytool error: java.lang.RuntimeException: Usage error, c=de" is not a legal command
PMVClient.jar signing...
Enter Passphrase for keystore:
```

Warum bekomme ich "Usage error, c=de" is not a legal command"?


----------



## L-ectron-X (15. Sep 2008)

Kann da jetzt nur vermuten. Hat vielleicht was mit den Anführungszeichen zu tun?


----------

