我用JApplet写一个web中的小程序,需要访问客户机本地资源,所以对包含了applet程序的jar文件做了数字签名处理,具体如下
1.keytool -genkey -keystore test.store -alias test
2.keytool -export -keystore test.store -alias spat -file test.cert
3.Jarsigner -keystore test.store test.jar test
4.做了一个policy文件applet.policy,内容如下
/* AUTOMATICALLY GENERATED ON Fri Sep 08 16:58:51 CST 2006*/
/* DO NOT EDIT */keystore "file:d:/admin/test.store", "JKS";grant signedBy "test" {
permission java.io.FilePermission "<<ALL FILES>>", "read, write, delete, execute";
};
5.在Jre的\lib\security\目录下的java.security文件中相应的位置加了一行policy.url.3=file:d:/admin/applet.policy内容,其中:D:/admin为存放applet.policy的路径然后用JFileChooser类做了一个打开文件的对话框,如果是直接按以下处理是没有问题的
例如:
JFileChooser fileChooser = new JFileChooser();
fileChooser. showOpenDialog();
并且用弹出的对话框,选择一个文件,还能读入内存,但如果不做数字签名,在执行new JFileChooser()的时候就报出下面错误:
Exception in thread "AWT-EventQueue-2" java.security.AccessControlException: access denied (java.util.PropertyPermission user.dir read)如果做了数字签名, 调用fileChooser.addChoosableFileFilter(fileFilter)添加了文件过滤器以后,在执行fileChooser. showOpenDialog这个方法的时候,在Console中会报出下面的错误:
Exception in thread "AWT-EventQueue-3" java.security.AccessControlException: access denied (java.util.PropertyPermission user.dir read)在相应的方法中,如果不弹出带有FileFilter的文件选择对话框,直接做某文件的读写也是可以的;从上面的两种错误来看,我觉得我做的数字签名还是有效的,但就是有的处理可以绕过Java虚拟机的安全沙箱,但是有的处理就不能;不知道是不是还有什么jar文件没有签名,或者其它的问题,说了这么多,想请各位大侠帮我看看具体的原因,急于求救中,还请高手不吝赐教;谢谢!
1.keytool -genkey -keystore test.store -alias test
2.keytool -export -keystore test.store -alias spat -file test.cert
3.Jarsigner -keystore test.store test.jar test
4.做了一个policy文件applet.policy,内容如下
/* AUTOMATICALLY GENERATED ON Fri Sep 08 16:58:51 CST 2006*/
/* DO NOT EDIT */keystore "file:d:/admin/test.store", "JKS";grant signedBy "test" {
permission java.io.FilePermission "<<ALL FILES>>", "read, write, delete, execute";
};
5.在Jre的\lib\security\目录下的java.security文件中相应的位置加了一行policy.url.3=file:d:/admin/applet.policy内容,其中:D:/admin为存放applet.policy的路径然后用JFileChooser类做了一个打开文件的对话框,如果是直接按以下处理是没有问题的
例如:
JFileChooser fileChooser = new JFileChooser();
fileChooser. showOpenDialog();
并且用弹出的对话框,选择一个文件,还能读入内存,但如果不做数字签名,在执行new JFileChooser()的时候就报出下面错误:
Exception in thread "AWT-EventQueue-2" java.security.AccessControlException: access denied (java.util.PropertyPermission user.dir read)如果做了数字签名, 调用fileChooser.addChoosableFileFilter(fileFilter)添加了文件过滤器以后,在执行fileChooser. showOpenDialog这个方法的时候,在Console中会报出下面的错误:
Exception in thread "AWT-EventQueue-3" java.security.AccessControlException: access denied (java.util.PropertyPermission user.dir read)在相应的方法中,如果不弹出带有FileFilter的文件选择对话框,直接做某文件的读写也是可以的;从上面的两种错误来看,我觉得我做的数字签名还是有效的,但就是有的处理可以绕过Java虚拟机的安全沙箱,但是有的处理就不能;不知道是不是还有什么jar文件没有签名,或者其它的问题,说了这么多,想请各位大侠帮我看看具体的原因,急于求救中,还请高手不吝赐教;谢谢!
grant signedBy "test" {
permission java.io.FilePermission "<<ALL FILES>>", "read, write, delete, execute";
permission java.io.PropertyPermission "user.dir" "read";
};