# Applets und Policy



## Gert (13. Jul 2007)

Hallo,

ich habe im deployment.properties File folgende Policies für ein signiertes Browser-Applet definiert:

deployment.security.trusted.policy=file://$SYSTEM_HOME/security/trusted.policy
deployment.system.security.policy=file://$SYSTEM_HOME/security/untrusted.policy
deployment.user.security.policy=file://$USER_HOME/security/java.policy

das signierte Applet schreibt unter C:\tmp\applets\ die Datei TrustedApplet.

Der Inhalt der Policy Dateien untrusted.policy und java.policy ist leer. 
Der Inhalt der Policy trusted.policy ist:

/* AUTOMATICALLY GENERATED ON Fri Jul 13 14:41:06 CEST 2007*/
/* DO NOT EDIT */

grant {
  permission java.lang.RuntimePermission "usePolicy";
  permission java.security.AllPermission;
};



Ferner habe ich die in der Java.security folgende Policyfiles auskommentiert, da diese ausschliesslich durch die deployment.properties Datei definiert werden sollen:

#policy.url.1=file:C:/WINXP/Sun/Java/Deployment/security/untrusted.policy
#policy.url.2=file:${user.home}/Application Data/Sun/Java/Deployment/security/java.policy
#policy.url.3=file:C:/WINXP/Sun/Java/Deployment/security/trusted.policy


...eigentlich sollte es so sein, das diese Applet ohne Prüfung des Zertifikats ausgeführt wird, genau das geschieht jedoch nicht. Ich erhalt den Sicherheits-Hinweis: Zertifikat nicht verifiziert (Code wird als nicht signiert behandelt). Beim drücke der OK Taste erscheint daher natürlich die AccessControlException: access denied....


Was mache ich falsch - weiss jemand Rat?


*Die Ausgabe der Java-Console:

java.security.cert.CertificateException: Ihre Sicherheitskonfiguration lässt die Erteilung von Berechtigungen an neue Zertifikate nicht zu
	at com.sun.deploy.security.TrustDecider.isAllPermissionGranted(Unknown Source)
	at com.sun.deploy.security.TrustDecider.isAllPermissionGranted(Unknown Source)
	at sun.plugin.security.PluginClassLoader.getPermissions(Unknown Source)
	at java.security.SecureClassLoader.getProtectionDomain(Unknown Source)
	at java.security.SecureClassLoader.defineClass(Unknown Source)
	at java.net.URLClassLoader.defineClass(Unknown Source)
	at java.net.URLClassLoader.access$100(Unknown Source)
	at java.net.URLClassLoader$1.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(Unknown Source)
	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)


----------



## L-ectron-X (13. Jul 2007)

Sicherheitsmechnismen sind dazu da, den Benutzer deines Applets vor unauthorisiertem Zugriff auf seine Daten zu schützen. Kritische Zugriffe werden daher nur mit Ausgabe eines Hinweisfensters, mit welchem der Benutzer deinem Applet erweiterte Rechte zugestehen kann, ausgeführt.


----------



## Gert (17. Jul 2007)

Danke L-ectron-X, aber dein Beitrag bringt mich in der Sache eigentlich null weiter... 

*Die Zeile 

permission java.lang.RuntimePermission "usePolicy"; 

führt dazu, dass alle Java Applets nur genau nach Policy Datei mit den entsprechenden Zugriffberechtigungen (wie oben genannten mit "allpermissions") ausgeführt werden. In Folge erscheint bei signierten Applets kein Prompt !!!


**Hatte schon die Befürchtung, dass die Profis in Policy-Umfeld hier sehr dünn gesäht sind - aber die Hoffnung stirbt bekanntlich zu letzt...


----------



## L-ectron-X (17. Jul 2007)

Gert hat gesagt.:
			
		

> Die Zeile
> 
> permission java.lang.RuntimePermission "usePolicy";
> 
> führt dazu, dass alle Java Applets nur genau nach Policy Datei mit den entsprechenden Zugriffberechtigungen (wie oben genannten mit "allpermissions") ausgeführt werden. In Folge erscheint bei signierten Applets kein Prompt !!!



Ich kann mir ehrlich nicht vorstellen, dass sich das Hinweisfenster auf diesem Wege unterdrücken ließe, weil es ein Sicherheitsproblem darstellen würde. Ein Programmierer könnte ein Applet mit kritischem Code einem Benutzer unterschieben, welcher davon ausgeht, dass der Code von einem auf seinem OS laufenden Programm oder dem OS selbst stammt.



			
				Gert hat gesagt.:
			
		

> **Hatte schon die Befürchtung, dass die Profis in Policy-Umfeld hier sehr dünn gesäht sind - aber die Hoffnung stirbt bekanntlich zu letzt...


Viel Spaß beim Weitersuchen...  :roll:


----------



## Wildcard (17. Jul 2007)

Viel Spaß beim Aushebeln der Java Security...  :roll: 
Wenn du das Warnfenster nicht haben willst, muss dein Zertifikat im Keystore der Client-VM liegen.


----------



## Gert (18. Jul 2007)

thanX, ...aber das ist kein "aushebeln" - ich definiere einfach die Sicherheit in den Policies und erspare mir somit die  Zertifikateverwaltung.. ;-)


----------



## Wildcard (18. Jul 2007)

Nur kann das eben nicht dein Applet erledigen, sondern das verwendete Zertifikat muss im Store der VM liegen.


----------

