applet 签名后还是出现安全异常
签名(这个签名在java web start下可以正常运行):
keytool -genkey -alias SEALStudio -keystore SEALStudio.store -keypass 654321 -storepass 654321 -validity 30 -dname "CN=SEAL Chen, OU=SEAL Studio, O=SEAL Studio, L=Guang Zhou, ST=Guang Dong, C=CN"jarsigner -keystore SEALStudio.store appletImages.jar SEALStudio但还是出错异常:
java.lang.Exception: java.security.AccessControlException: access denied (java.io.FilePermission C:\TOWIN\0\0\0\0 read)
at sun.plugin.com.DispatchImpl.invokeImpl(Unknown Source)
at sun.plugin.com.DispatchImpl$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at sun.plugin.com.DispatchImpl.invoke(Unknown Source)

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【chensjmail】截止到2008-07-18 10:05:17的历史汇总数据(不包括此帖):
    发帖的总数量:13                       发帖的总分数:590                      每贴平均分数:45                       
    回帖的总数量:121                      得分贴总数量:45                       回帖的得分率:37%                      
    结贴的总数量:1                        结贴的总分数:100                      
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:12                       未结的总分数:490                      
    结贴的百分比:7.69  %               结分的百分比:16.95 %                  
    无满意结贴率:0.00  %               无满意结分率:0.00  %                  
      

  2.   

    applet没有读取本地文件的权限吧。
      

  3.   

    它跟jws不一样,不要让它涉及文件操作。需要读文件的话文件的内容可以当参数传进去。
      

  4.   

    可以考虑使用Policy文件,permission   java.io.FilePermission   "your file",   "read";   
      

  5.   

    applet与jws在这方面有什么样的区别,能说一下吗?
    我用jws写了数字签名后大多权限都有,读取,创建,删除都可以
      

  6.   

    我也用过jws,查资料也是说那个可以通过改策略文件来增加权限。
    不知道你要处理的是什么地方的文件,跟applet本身有关系的话可以考虑直接打包到jar中。
      

  7.   

    从网上搜到的是通过URL读,没用过,自己看看吧
    URL u1=getDocumentBase();
    URL ufile=new URL(u1,"xyz.txt");
    DataInputStream dins=new DataInputStream(ufile.openStream());
    //dins.readLine();最后进行操作
    说明:将xyz.txt文件放置在和.html同一个目录下就可以了。 
      

  8.   

    即使是数字签名也需要修改Policy才能读文件,或者你把它当作一种网络资源来读取也行。
      

  9.   

    还有没有人来帮帮忙,
    安理讲,applet和jws都是在类似的沙箱中运行的,
    jws 签名后就可以得到权限,为什么applet不行呢,
    是我哪里没做对吗,
    还望大家帮帮忙
      

  10.   

    由于applet的沙箱机制,applet需要签名后才可访问客户端文件 
    签名脚本: 
    1.打开cmd 
    2.进入jdk的bin目录,执行以下脚本 
    keytool -genkey -keystore javalining.store -alias javalining 
    (javalining为文件名,可变) 
    回车,待上面命令执行完成后,执行以下命令填写相关信息 
    keytool -export -keystore javalining.store -alias javalining -file javalining.cert 
    记住所填密码 
    3.将相关证书信息填写好后,将要进行数字签名的jar(youjar.jar)拷到bin目录下,运行以下命令即可 
    jarsigner -keystore javalining.store youjar.jar javalining 
    签名文件创建后后,以后签名只需执行第3步即可 
    楼主可试一试
      

  11.   

    将下面的文本修改后复制到记事本另存为jarsigner.bat,双击运行后输入密码即可实现签名,当然要先建好密钥库文件 
    ,也就实现执行 
    1.打开cmd 
    2.进入jdk的bin目录,执行以下脚本 
    keytool -genkey -keystore javalining.store -alias javalining 
    (javalining为文件名,可变) 
    回车,待上面命令执行完成后,执行以下命令填写相关信息 
    keytool -export -keystore javalining.store -alias javalining -file javalining.cert 
    记住所填密码 
    成功后 
    @echo off 
    title  applet签名工具 
    @Rem 将下面的路径改为你系统中jdk对应路径 
    cd C:\Program Files\Java\jdk1.5.0_03\bin 
    @Rem 删除原来路径下的jar 
    del youjar.jar 
    @Rem 从你打包好的jar所在路径将打包好的jar复制到bin下,C:\youjar.jar为你jar包所在路径 
    copy C:\youjar.jar 
    @Rem 清除复制文件成功的提示 
    cls 
    @Rem 将下面的路径改为你系统中jdk对应路径 
    jarsigner -keystore javalining.store youjar.jar javalining 
    @Rem 打开cmd输入密码,签名完成 
    cmd.exe 
      

  12.   

    谢谢,签名我会写,但是applet还是会报
    java.lang.Exception: java.security.AccessControlException: access denied (java.io.FilePermission C:\TOWIN\0\0\0\0 read) 
    异常