给jar包进行数字签名(2014-06-28记)

整理一下两年前用到的一些资料。
为了使Applet或者Java Web Start程序能够访问客户端本地资源,需要对Applet或者JWS程序jar包进行数据签名,当客户端打开Applet或者JWS程序的时候,会提示是否允许该程序访问本地资源,允许访问则程序就可以按照某种访问权限访问客户机的本地资源了。
签名步骤:
1、将程序打成jar包。

2、 用keytool命令生存.store(密匙库)文件。
(1)、keytool.exe文件在JDK安装目录下(C:Program FilesJavajdk1.6.0_33in)
        在DOC命令下输入:cd C:Program FilesJavajdk1.6.0_33in
(2)、再输入指令:keytool -genkey -keystore mystore.store -alias mystore -validity 3650
        输入指令后回车,会提示输入store密码、名字与姓氏、组织单位名称、组织名称、所在城市或区域名称、州或省份名称、单位的两字母国家代码;依次输入完成最后提示是否正确,输入y确认信息,提示输入主密码,如果和keystore密码相同直接回车完成。这样在目录C:Program FilesJavajdk1.6.0_33in下面就生成了一个mystore.store文件。
注:mystore.store为密匙库名称,可以随意改但后缀不能改;-alias后面的mystore为别名,可以改成自己的名称;-validity后面的3650表示的是10年(用这个证书签名的程序10年内有效)

3、 使用keytool.exe工具导出签名时用到的证书。
(1)、在DOS窗口执行命令:keytool -export -keystore mystore.store -alias mystore -file mystore.cert
命令执行成功后,会在目录C:Program FilesJavajdk1.6.0_33in下生成了一个mystore.cert文件。
        注:mystore.store为第二步骤生成的密匙库名称、mystore也是第二步骤指定的别名、mystore.cert为生成的证书名称,可修改名称,但后缀不能修改。
 
4、使用jarsinger工具签名jar包。
(1)、 jarsigner.exe文件在JDK安装目录下(C:Program FilesJavajdk1.6.0_33in)
        在第2步骤 DOS窗口中输入指令:jarsigner -keystore mystore.store app.jar mystore
        回车,依次按提示操作直到结束。
           注:mystore.store为第二步骤生成的密匙库名称、app.jar为第1步骤打包的jar、mystore为提供者的名称,此处我们设置为我们的别名。
到此已经给jar数字签名完成。

还有一点要说的是Applet的权限问题, 要让Applet可以对本地的所有文件进行读写操作还需要配置C:Program FilesJavajdk1.6.0_33jrelibsecurity目录下的java.security文件如下:grant {permission java.security.AllPermission; }; 
 (完成1~3步骤后,以后要用当前的签名密匙库和证书签名其他的jar包只需要执行第4步骤即可。)
附图:
给jar包进行数字签名(2014-06-28记)