http://www.csdn.net/expert/topic/45/45063.shtm

解决方案 »

  1.   

    java1.2以后,签名改用keytool了(不用jarsigner)
    步骤如下:(1)用keytool生成公钥和私钥的密匙对。
    如下图:如果不加选项(-alias 默认别名为mykey)
    操作:keytool –genkey –alias youralias –validity n  (n days 为有效期)然后根据提示操作(2)保存所选别名对应的证书*.cer.(用于解密的公钥和证书是存放在一起的,即证书包含着公钥)
    操作:keytool –export –alias youralias –file yourcert.cer(3)自签名证书:
    自签名,即自己信任自己的证书,使之成为根证书。(有效期?)
    操作:keytool –selfcert –export youralias(4)装入证书。把自己的“根证书”装入在[jre home]/lib/security/cacerts的keystore 中。(钥匙仓库)cacerts的默认密码是:changeit
    操作:keytool –import –alias youralias –file yourcert.cer –keystore [jre home]/lib/security/cacerts(5)签署jar文件:
    a. 把程序所须的类加入.jar中。
    操作:jar fc your.jar *.class    (把当前目录下的类生成jar)
      jar fu your.jar der/*.class (把der子目录下的class j加入jar中)
    b. 用别名签名
    操作:jarsigner your.jar youralias
    c. 验证签署:
    操作:jarsigner –verify –verbose your.jar
    (6) 修改策略文件.java.policy
    加上:
    grant signedBy “youralias”
    {
    permission ******************;
    };
    注明:这是数字签名与安全策略配合使用。that' all
      

  2.   

    http://www.java.sun.com/docs/books/tutorial/jar/sign/index.html
      

  3.   

    各位高手,以上的方法我已使用过了,而且操作也都提示成功,用jarsinger -verity查看jar文件也都显示已签名,同时也已把签名用的crt证书导出后,装入到IE的证书系统中,但我的java类中使用new FileDailog()时,还是会产生安全异常,
    急啊!!!!高手请出招吧!!
      

  4.   

    jdk1.2及以上版本为了使安全性控制更加灵活,增加了policy文件的控制。
    需要修改你的.java.policy文件,授予你的签名的applet访问相应文件或目录的权限。
    参看:http://java.sun.com/docs/books/tutorial/security1.2/overview/index.html
      

  5.   

    writeus(半路出家):
      请看清楚了,自签名的证书必须:
    ---装入证书。把自己的“根证书”装入在[jre home]/lib/security/cacerts的keystore 中。(钥匙仓库)cacerts的默认密码是:changeit
    操作:keytool –import –alias youralias –file yourcert.cer –keystore [jre home]/lib/security/cacerts
    看清楚!!!!!!!!!!!!!!!!!!!!!!!!
    装入IE的证书系统是没用的。
    在注意的是:你在“控制面板”你会发现java plug-in的图标,双击他,你装的证书出现在他的
    列表里,才叫成功!
    plug-in必须(当你用了swing,corba等java2新特性后)我是成功过了!