# Textdateien mit Applet auslesen



## coolerouny (28. Dezember 2005)

hallo

wie kann man mit einem applet eine textdatei auslesen bzw sie umschreiben?

mfg
coolerouny


----------



## Thomas Darimont (28. Dezember 2005)

*Re: textdatein mit applet auslesen*

Hallo!

 Du mußt das Applet signieren, damit es auf Dateien des Clients zugreiffen kann. Wenn das Applet entsprechend signiert ist, kannst du wie in jeder normalen Java Applikation Dateien auslesen und manipulieren.

 Gruß Tom


----------



## coolerouny (28. Dezember 2005)

*Re: textdatein mit applet auslesen*

aha!

und wie mach ich das? 

mfg
coolerouny


----------



## Thomas Darimont (28. Dezember 2005)

*Re: textdatein mit applet auslesen*

Hallo!

   Unser Applet:

```
/**
    * 
    */
   package de.tutorials.applet.signed;
   
   import java.io.DataInputStream;
   import java.io.DataOutputStream;
   import java.io.File;
   import java.io.FileInputStream;
   import java.io.FileOutputStream;
   
   import javax.swing.JApplet;
   import javax.swing.JLabel;
   
   /**
    * @author Tom
    * 
    */
   public class SignedAppletExample extends JApplet {
   	long lastStartTime;
   
   	public void start() {
   		File file = new File("c:/applet.data");
   		try {
   			if (file.exists()) {
 		 	DataInputStream dis = new DataInputStream(new FileInputStream(
 						file));
 				lastStartTime = dis.readLong();
   				dis.close();
   				file.delete();
   			}
 			DataOutputStream dos = new DataOutputStream(new FileOutputStream(
 					file));
   			dos.writeLong(System.currentTimeMillis());
   			dos.flush();
   			dos.close();
   		} catch (Exception e) {
   			e.printStackTrace();
   		}
   
   		add(new JLabel("Last start: " + lastStartTime));
   	}
   }
```
 
   Nun erstellen wir ein jar Archiv ... namens signedApplet.jar.

   Anschließend erstellen wir uns ein Zertifikat:
   Zertifikat erstellen:


```
C:\Programme\Java\jdk1.5.0_04\bin>keytool.exe -alias hans -genkey
   Geben Sie das Keystore-Passwort ein:  foobar
   Wie lautet Ihr Vor- und Nachname?
    [Unknown]:  Hans Mustermann
   Wie lautet der Name Ihrer organisatorischen Einheit?
    [Unknown]:  NoName
   Wie lautet der Name Ihrer Organisation?
    [Unknown]:  NoName Inc.
   Wie lautet der Name Ihrer Stadt oder Gemeinde?
    [Unknown]:  Saarbrücken
   Wie lautet der Name Ihres Bundeslandes oder Ihrer Provinz?
    [Unknown]:  Saarland
   Wie lautet der Landescode (zwei Buchstaben) f³r diese Einheit?
    [Unknown]:  DE
   Ist CN=Hans Mustermann, OU=NoName, O=NoName Inc., L=Saarbr?cken, ST=Saarland, C=DE richtig?
    [Nein]:  ja
   
   Geben Sie das Passwort f³r <hans> ein.
   		(EINGABETASTE, wenn Passwort dasselbe wie f³r Keystore):
```
 
   Nun müssen wir noch das Jar signieren:

```
C:\Programme\Java\jdk1.5.0_04\bin>jarsigner.exe E:\eclipse\3.1.1\eclipse\workspace\de.tutorials.applet.signed\signedApplet.jar hans
   Enter Passphrase for keystore: foobar
   
   Warning: The signer certificate will expire within six months.
```
 
   Wir erstellen folgende index.html Seite zum anzeigen des Applets:

```
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
   <html>
   <head>
   <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
   <title>Insert title here</title>
   </head>
   <body>
   <applet code="de.tutorials.applet.signed.SignedAppletExample" archive="signedApplet.jar" />
   </body>
   </html>
```
 
 Wenn wir unser Applet nun im Browser anschauen, so erhalten wir eine Sicherheitswarnung... bestätigen wir diese mit "ausführen" so kann unser Applet auch auf Systemresourcen zugreiffen.

   Gruß Tom


----------



## coolerouny (28. Dezember 2005)

*Re: textdatein mit applet auslesen*

aha 

werd mal schaun ob ich das schaff


danke

mfg
coolerouny


----------



## maxx06 (2. Mai 2006)

Hallo, ich habe versucht das Applet zum laufen zu bringen, aber leider funktioniert es nicht.
Das Applet startet zwar und ews kommt auch

"Last start:"

aber dann nur eine "0" und die Abfrage nach dem Zertifikat erscheint auch nicht

Könnte mir jemand sagen woran das liegt?

Gruß Maximilian


----------



## Alex02 (30. Juni 2006)

Hallo Thomas,
ich probier grad nach Deiner Anleitung vorzugehen:

Wenn ich die Datei jarsigner.exe ausführe bekomme ich folgende Meldung:


C:\Sun\AppServer\jdk\bin>jarsigner.exe C:\Security.jar
Usage: jarsigner [options] jar-file alias
       jarsigner -verify [options] jar-file

[-keystore <url>]           keystore location

[-storepass <password>]     password for keystore integrity

[-storetype <type>]         keystore type

[-keypass <password>]       password for private key (if different)

[-sigfile <file>]           name of .SF/.DSA file

[-signedjar <file>]         name of signed JAR file

[-verify]                   verify a signed JAR file

[-verbose]                  verbose output when signing/verifying

[-certs]                    display certificates when verbose and verifying

[-tsa <url>]                location of the Timestamping Authority

[-tsacert <alias>]          public key certificate for Timestamping Authority

[-altsigner <class>]        class name of an alternative signing mechanism

[-altsignerpath <pathlist>] location of an alternative signing mechanism

[-internalsf]               include the .SF file inside the signature block

[-sectionsonly]             don't compute hash of entire manifest

[-protected]                keystore has protected authentication path

[-providerName <name>]      provider name

[-providerClass <class>     name of cryptographic service provider's
  [-providerArg <arg>]] ... master class file and constructor argument


das Applet ausführen kann ich dann auch nicht.

Noch eine Frage, muss ich etwas in "Manifest.mf" anpassen?

Gruß

Alex


----------



## Thomas Darimont (30. Juni 2006)

Hallo!


```
C:\Sun\AppServer\jdk\bin>jarsigner.exe C:\Security.jar
```

Da fehlt noch als zweiter Parameter der Key-Store alias den du fuer das Signieren dieses Jars verwenden willst.

In meinem Beispiel:

```
jarsigner.exe E:\eclipse\3.1.1\eclipse\workspace\de.tutorials.applet.signed\signedApplet.jar hans
```

Gruss Tom


----------



## Alex02 (30. Juni 2006)

Hallo Tom,

das hat jetzt gefunzt.  

kann aber trotzdem nicht drauf zugreifen.  

Ich versuch es folgendermaßen aufzurufen:

<HTML>
<HEAD>
<TITLE> Fleckengenerator </TITLE>
</HEAD>

<BODY>
Dieses Dokument dient der Demonstration des Fleckengenerators <br>
<br>
Wenn Sie möchten, können Sie sich unter dem Ausgabefenster des SpotApplets den Quelltext zur Erzeugung
der Flecken ansehen
<hr>

<APPLET CODE="exportPaket.Ap_Report.class" archive="Security.jar "WIDTH=400 HEIGHT=200>
</APPLET>

<hr>

</BODY>

</HTML>

Ich bekomm die Meldung "Applet exportPaket.Ap_report notinited"  



Gruß

Alex


----------



## Thomas Darimont (30. Juni 2006)

Hallo!

Ich glaube du solltest mal etwas genauer hinsehen, wenn du ein Beispiel nachmachst... 

```
...code="de.tutorials.applet.signed.SignedAppletExample"...
```

lass bei:

```
<APPLET CODE="exportPaket.Ap_Report.class" archive="Security.jar "WIDTH=400 HEIGHT=200>
```
mal das .class im CODE Attribut hinten weg...

Gruss Tom


----------



## Alex02 (30. Juni 2006)

Hallo Tom,

vielen Dank für Deine Hilfe.

Es scheint zu funktionieren.    

Danke nochmals.

Gruß

Alex


----------



## Alex02 (30. Juni 2006)

Doch nochmal eine Frage.

Lokal läuft das Ganze.

Ich hab jetzt das Security.jar auf den Server kopiert und will das mit Folgendem aufrufen
(VTL wird beim Laden der Seite gestartet):

<HTML>
<HEAD>
<TITLE> Fleckengenerator </TITLE>
</HEAD>

<BODY>
Dieses Dokument dient der Demonstration des Fleckengenerators <br>
<br>
Wenn Sie möchten, können Sie sich unter dem Ausgabefenster des SpotApplets den Quelltext zur Erzeugung
der Flecken ansehen
<hr>

<APPLET CODE="exportPaket.Ap_Report" archive="//intedis2/c$/xtreme/org/portal_new/internal/system/vm/html/include/Security.jar" WIDTH=600 HEIGHT=400>
</APPLET>


</BODY>
</HTML>

bekomme dabei die Fehlermeldung:

Laden: Klasse exportPaket.Ap_Report nicht gefunden

java.lang.ClassNotFoundException: exportPaket.Ap_Report

	at sun.applet.AppletClassLoader.findClass(Unknown Source)

	at java.lang.ClassLoader.loadClass(Unknown Source)

	at sun.applet.AppletClassLoader.loadClass(Unknown Source)

	at java.lang.ClassLoader.loadClass(Unknown Source)

	at sun.applet.AppletClassLoader.loadCode(Unknown Source)

	at sun.applet.AppletPanel.createApplet(Unknown Source)

	at sun.plugin.AppletViewer.createApplet(Unknown Source)

	at sun.applet.AppletPanel.runLoader(Unknown Source)

	at sun.applet.AppletPanel.run(Unknown Source)

	at java.lang.Thread.run(Unknown Source)

Caused by: java.io.IOException: open HTTP connection failed.

	at sun.applet.AppletClassLoader.getBytes(Unknown Source)

	at sun.applet.AppletClassLoader.access$100(Unknown Source)

	at sun.applet.AppletClassLoader$1.run(Unknown Source)

	at java.security.AccessController.doPrivileged(Native Method)

	... 10 more



Das Verzeichnis C ist hier freigegeben!

Ich habs auch mit CODEBASE="//intedis2/c$/xtreme/org/portal_new/internal/system/vm/html/include" probiert 

Nüschts! 

Eine Idee?

Gruß

Alex


----------



## Alex02 (30. Juni 2006)

Sorry, mein Fehler.

Ich hab mich vertippt.

Gruß

Alex


----------



## Alex02 (30. Juni 2006)

Hallo,

es läuft doch noch nicht so ganz.

Wenn ich von meinem Client aus auf den Server zugreife  alles wunderbar.

Versucht jedoch ein Anderer von seinem Client aus zuzugreifen, streikt das ganze Teil (Damit meine ich dass der FileChooser nicht geladen wird)!   

Ich nehm mal an es liegt an den Benutzerrechten. Ich bin angemeldet als Admin.
Bei anderen Admins funktioniert das auch, jedoch nicht bei einem normalen User.


Was könnte der Grund sein?
Bringt es was, wenn ich die Signierung auf dem Server durchführe?
Gruß

Alex


----------



## Lautsprecher (7. März 2007)

Hallo,
ich versuche gerade Tom's Beispiel zum Laufen zu bringen. 
allerdings erhalte ich beim Jar signieren folgende Fehlermeldung.



```
C:\Programme\Java\jdk1.6.0\bin>jarsigner.exe C:\Gesigntes Applet\signedApplet.ja
r mickey
Enter Passphrase for keystore:
jarsigner: Certificate chain not found for: Applet\signedApplet.jar.  Applet\sig
nedApplet.jar must reference a valid KeyStore key entry containing a private key
 and corresponding public key certificate chain
```


Grüße


----------



## Caste (22. März 2007)

Danke Thomas!
Ich hab schon einige Anleitungen zu dem Thema gelesen und es nie richtig hinbekommen weil ich nie bemerkt hab, dass man .class nicht anhängen darf...
Jetzt läufts prima, danke!


----------



## dadaen (2. April 2007)

Vielen Dank für das super How-To!
Ich bin gerad dabei ein Applet von mir fürs Web umzuarbeiten.


----------



## Caste (4. April 2007)

Ich hab mir ein neues Linux installiert (Kubuntu feisty) und mir das neue Java SDK installiert und wollte damit ein Applet signieren.
Dabei bekomme ich beim Aufruf von "keytool -selfcert -alias ..usw" immer den Fehler: "keytool error: not encrypted", aber das Internet konnte mir da nicht viel helfen.. Muss ich irgendwo einstellen dass keytool meinen keystore verschlüsselt?

Grüße
  Carsten


----------



## XQs_me (3. August 2007)

Hallo,
ich versuche gerade Tom's Beispiel zum Laufen zu bringen.
allerdings erhalte ich beim Jar signieren folgende Fehlermeldung.


Code:

C:\Programme\Java\jdk1.6.0\bin>jarsigner.exe C:\Programme\Apache Software Foundation\Tomcat 6.0\webapps\KohlerAPPL\com\midcc\initial\KohlerAppletSigned.jar
Enter Passphrase for keystore:
jarsigner: Certificate chain not found for: Software.  Software must reference a
 valid KeyStore key entry containing a private key and corresponding public key
certificate chain

was mach ich gegen diesen Fehler?


----------



## Caste (3. August 2007)

Hi, du musst einfach nur den Pfad in Anführungszeichen setzen weil jarsigner sonst nicht weiß wo der Pfad aufhört und die anderen Argumente anfangen..

Das ist übrigens bei allen Kommandozeilenaufrufen so, wo der Pfad Leerzeichen enthält!

*jarsigner.exe "C:\Programme\Apache Software Foundation\Tomcat 6.0\webapps\KohlerAPPL\com\midcc\initial\KohlerAppletSigned.jar" <Name>*

Außerdem musst du wie du hier siehst auch noch angeben, wer aus deinem Keystore das Applet signieren soll. Angenommenn du hast einen Key namens "Peter", dann musst du oben <Name> durch Peter ersetzen(ohne anführungszeichen)

Gruß
Carsten


----------



## Thomas Reihl (26. November 2007)

Nettes How-To-Do.

Gibt es eigentlich eine Möglichkeit die Gültigkeit des Zertifikates manuell zu bestimmen?


----------



## matdacat (26. November 2007)

Ja, siehe tutorials.de.


----------



## Thomas Reihl (26. November 2007)

Danke für den Hinweis.


----------

