Im Beitrag Sicherheitrichtlinien für Applets
ich habe entsprechend den Anleitungen 'Signierte Applets' (im Kapitel 47. Sicherheit und Kryptographie) aus 'Go To Java 2' http://javabuch.de) und 'How to Sign Applets Using RSA-Signed Certificates' ( http://java.sun.com/j2se/1.4.2/docs/guide/plugin/developer_guide/rsa_signing.html ) ein signiertes Applet in der Datei strapp.jar und eine Policy-Datei erstellt und erfolgreich getestet (mit Internet Explorer und Firefox 0.8). Entsprechend den in der Policy gesetzten Rechten
hat meine TrustedApplet.java-Klasse im gleichen Verzeichnis eine Datei TrustedApplet.log mit oben aufgelisteten Daten erstellt. Diese in der jar-datei verpackte funktionsfähige Klasse TrustedApplet.class habe ich immer noch. Aber meine wiederholte Versuche eine zweite 1:1 identische Klasse zu erstellen scheitern. Ich bilde mir ein, dass ich alles wie beim ersten erflgreichen Versuch mache, aber im Endergebnis komme ich immer wieder zu
Meine neue signedApplet.jar-Datei ist erfolgreich signiert. Hier das Ergebnis:
Also 'jarsigner' bestätigt, dass meine signedApplet.jar signiert ist und trotzdem bekomme ich ' access denied'. Was ich securitymäßig in meiner Java-Umgebung geändert habe ist m.E. nur, das ich in die Schlüsseldatenbank '.keystore' noch ein Zertifikat nach gleichem Muster, wie auch das erste, funktionierendes, importiert. Aber das dürfte doch nicht auf die Funktionsfähigkeit eines bereits funktionierenden Zertifikats auswirken?
Das steht in der TrustedApplet.class (wie gesagt, übernommen aus 'Go To Java 2' und hat beim ersten Versuch funktioniert )
Diese Applet-Lösung ist mein Versuch alternativ zu einem Schreibzugriff auf VBScript-Basis eine Java-basierte-Lösung umzusetzen. Weil ich eigentlich hätte am liebsten möglichst wenig mit MS-Produkten zu tun.
Kann jemand in meinen Quellen Fehler auf Anhieb erkennen?
Über (ein Link zu) Kurzbeschreibung 'Wie man richtig Applets signiert', die von oben genannten Quellen abweicht, würde ich mich freuen.
Meine Arbeitsumgebung
Windows 98 SE
j2sdk1.4.2 04
Das stimmt so nicht, IMHO 8) :Donut hat gesagt.:Wenn du dein Applet zertifizeren lassen willst, musst du das glaun ich bei Microsoft irgendwie anmelden, was aber nur im IE zusätzliche Rechte bedeuten würde. Von daher ist dies nicht sinvoll.
ich habe entsprechend den Anleitungen 'Signierte Applets' (im Kapitel 47. Sicherheit und Kryptographie) aus 'Go To Java 2' http://javabuch.de) und 'How to Sign Applets Using RSA-Signed Certificates' ( http://java.sun.com/j2se/1.4.2/docs/guide/plugin/developer_guide/rsa_signing.html ) ein signiertes Applet in der Datei strapp.jar und eine Policy-Datei erstellt und erfolgreich getestet (mit Internet Explorer und Firefox 0.8). Entsprechend den in der Policy gesetzten Rechten
Code:
keystore "file:/c:/Gw_win98/Profiles/www/.keystore;"
grant SignedBy "[b]DOMArtikel[/b]" {
permission java.io.FilePermission "c:\\worker\\*", "read,write";
permission java.util.PropertyPermission "user.name", "read";
permission java.util.PropertyPermission "user.home", "read";
permission java.util.PropertyPermission "user.dir", "read";
};
Code:
java.security.AccessControlException: access denied (java.io.FilePermission\TrustedApplet.log write).
Code:
C:\worker>jarsigner -verify -verbose -certs signedApplet.jar
147 Sat Jul 24 11:12:34 CEST 2004 META-INF/MANIFEST.MF
200 Sat Jul 24 11:12:34 CEST 2004 META-INF/DOMARTIK.SF
1975 Sat Jul 24 11:12:34 CEST 2004 META-INF/DOMARTIK.DSA
0 Sat Jul 24 10:58:36 CEST 2004 META-INF/
0 Fri Mar 12 14:37:54 CET 2004 jar/
smk 1826 Sat Jul 24 10:56:36 CEST 2004 jar/TrustedApplet.class
X.509, CN=Gustav WAll, OU=http://selfcms.de, O=http://selfcms.de, L=Kamenz
, ST=Sachsen, C=DE ([b]domartikel[/b])
X.509, CN=Thawte Test CA Root, OU=TEST TEST TEST, O=Thawte Certification,
ST=FOR TESTING PURPOSES ONLY, C=ZA
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 verified.
Das steht in der TrustedApplet.class (wie gesagt, übernommen aus 'Go To Java 2' und hat beim ersten Versuch funktioniert )
Code:
/* TrustedApplet.java */
import java.awt.*;
import java.applet.*;
import java.util.*;
import java.io.*;
public class TrustedApplet extends Applet
{
static final String ALLOWED_DIR = "c:\\worker\\";
static final String FNAME = "TrustedApplet.log";
static final String LOGMSG = "Erzeugt von Applet: ";
String msg;
public void init() {
msg = "Uninitialisiert";
FileWriter out = null;
try {
//Ausgabedatei erzeugen
out = new FileWriter(ALLOWED_DIR + FNAME);
//Logmessage schreiben
out.write(LOGMSG);
//Zeitstempel schreiben
GregorianCalendar cal = new GregorianCalendar();
out.write(cal.get(Calendar.DATE) + ".");
out.write((cal.get(Calendar.MONTH) + 1) + ".");
out.write(cal.get(Calendar.YEAR) + " ");
out.write(cal.get(Calendar.HOUR_OF_DAY) + ":");
out.write(cal.get(Calendar.MINUTE) + ":");
out.write(cal.get(Calendar.SECOND) + "");
out.write(System.getProperty("line.separator"));
//System-Properties lesen und in Datei schreiben
out.write(getProp("user.name"));
out.write(getProp("user.home"));
out.write(getProp("user.dir"));
//Datei schließen
msg = "Hurra!!!\n\nAlle Sicherheitshuerden ueberwunden!";
} catch (Exception e) {
msg = e.toString();
} finally {
if (out != null) {
try {
out.close();
} catch (IOException e) {
//silently ignore
}
}
}
}
public void paint(Graphics g)
{
g.drawString(msg, 20, 20);
}
private String getProp(String prop)
{
return prop + "=" +
System.getProperty(prop) +
System.getProperty("line.separator");
}
}
Code:
<html>
<title>TrustedApplet</title>
<body>
<applet code="TrustedApplet.class" archive="signedApplet.jar" width="200" height="200">
<param name="String" value="Ausgabe im Applet-Fenster"> </applet>
</body>
</html>
Kann jemand in meinen Quellen Fehler auf Anhieb erkennen?
Über (ein Link zu) Kurzbeschreibung 'Wie man richtig Applets signiert', die von oben genannten Quellen abweicht, würde ich mich freuen.
Meine Arbeitsumgebung
Windows 98 SE
j2sdk1.4.2 04