整理一下两年前用到的一些资料。
为了使Applet或者Java Web Start程序能够访问客户端本地资源,需要对Applet或者JWS程序jar包进行数据签名,当客户端打开Applet或者JWS程序的时候,会提示是否允许该程序访问本地资源,允许访问则程序就可以按照某种访问权限访问客户机的本地资源了。
签名步骤:
1、将程序打成jar包。
2、 用keytool命令生存.store(密匙库)文件。
(1)、keytool.exe文件在JDK安装目录下(C:\Program Files\Java\jdk1.6.0_33\bin)
        在DOC命令下输入:cd C:\Program Files\Java\jdk1.6.0_33\bin
(2)、再输入指令:keytool -genkey -keystore mystore.store -alias mystore -validity 3650
        输入指令后回车,会提示输入store密码、名字与姓氏、组织单位名称、组织名称、所在城市或区域名称、州或省份名称、单位的两字母国家代码;依次输入完成最后提示是否正确,输入y确认信息,提示输入主密码,如果和keystore密码相同直接回车完成。这样在目录C:\Program Files\Java\jdk1.6.0_33\bin下面就生成了一个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 Files\Java\jdk1.6.0_33\bin下生成了一个mystore.cert文件。
        注:mystore.store为第二步骤生成的密匙库名称、mystore也是第二步骤指定的别名、mystore.cert为生成的证书名称,可修改名称,但后缀不能修改。
 
4、使用jarsinger工具签名jar包。
(1)、 jarsigner.exe文件在JDK安装目录下(C:\Program Files\Java\jdk1.6.0_33\bin)
        在第2步骤 DOS窗口中输入指令:jarsigner -keystore mystore.store app.jar mystore
        回车,依次按提示操作直到结束。
           注:mystore.store为第二步骤生成的密匙库名称、app.jar为第1步骤打包的jar、mystore为提供者的名称,此处我们设置为我们的别名。
到此已经给jar数字签名完成。
还有一点要说的是Applet的权限问题, 要让Applet可以对本地的所有文件进行读写操作还需要配置C:\Program Files\Java\jdk1.6.0_33\jre\lib\security目录下的java.security文件如下:grant {permission java.security.AllPermission; }; 
 (完成1~3步骤后,以后要用当前的签名密匙库和证书签名其他的jar包只需要执行第4步骤即可。)

附图:
 

给jar包进行数字签名(2014-06-28记)的更多相关文章

  1. JAR包数字签名与验证

    经签名的Jar包内包含了以下内容: 原Jar包内的class文件和资源文件 签名文件 META-INF/*.SF:这是一个文本文件,包含原Jar包内的class文件和资源文件的Hash 签名block ...

  2. Java JAR包

    JAR文件全称 Java Archive File,意为Java档案文件.JAR文件是一种压缩文件,也被成为JAR包. 运行程序时,JVM会自动在内存中解压要用的JAR包. 使用JAR包的优点:1.安 ...

  3. 时间“Thu Aug 14 2014 14:28:06 GMT+0800”的转换

    var date = "Thu Aug 14 2014 14:28:06 GMT+0800"; var va = DateTime.ParseExact(date, "d ...

  4. Flutter学习笔记(28)--使用第三方jar包

    如需转载,请注明出处:Flutter学习笔记(28)--使用第三方jar包 1.打开一个Flutter项目,点击编码窗口右上角的Open for Editing in Android Studio,这 ...

  5. spring无法扫描jar包的问题

    在日常开发中往往会对公共的模块打包发布,然后调用公共包的内容.然而,最近对公司的公共模块进行整理发布后.spring却无法扫描到相应的bean.折腾了好久,最终发现是认识上的误区. 2015-11-1 ...

  6. 把自己的程序打成jar包,让别人调用

     我们写程序的时候往往需要把自己的程序打包成jar包,给第三方调用.Eclipse让我们非常方便的可以导出jar包.但是当程序里需要用到res里的资源时,往往就会出现问题.因为统自动生成的R类如果被打 ...

  7. 02_MyBatis项目结构,所需jar包,ehcache.xml配置,log4j.properties,sqlMapConfig.xml配置,SqlMapGenerator.xml配置

     项目结构(所需jar包,配置文件) sqlMapConfig.xml的配置内容如下: <?xmlversion="1.0"encoding="UTF-8&qu ...

  8. 【Selenium-WebDriver实战篇】Eclipse上的maven使用JsonObject时,添加依赖后无法自动下载相应的jar包

    ==================================================================================================== ...

  9. JAR-使用JAVA命令编译打包一个可执行jar包

    一.开发一个演示项目 项目源代码开发 项目名称叫jar-package-example(其实只是一个文件夹, 用以将演示的所有文件夹和文件存放在其中, 没啥其它作用), 为了方便, 后文统一叫jar- ...

随机推荐

  1. TF-IDF算法

    转自:http://www.cnblogs.com/eyeszjwang/articles/2330094.html TF-IDF(term frequency–inverse document fr ...

  2. Console ArcEngine 许可绑定

    using ESRI.ArcGIS.Carto;using ESRI.ArcGIS.Geodatabase;using ESRI.ArcGIS.DataSourcesFile; using ESRI. ...

  3. js 原生 ajax 异步上传图片

    <script type="text/javascript"> function upload() { var file1 = document.getElementB ...

  4. 2016HUAS暑假集训训练2 A - Is It A Tree?

    Description A tree is a well-known data structure that is either empty (null, void, nothing) or is a ...

  5. 20145334赵文豪 《Java程序设计》第4周学习总结

    20145334赵文豪 <Java程序设计>第4周学习总结 教材学习内容总结 第六章知识点总结 1-继承共同行为:如果在程序设计上存在着重复,那就需要修改,可以吧相同的程序代码提升(pul ...

  6. 在strut.xml 中使用ognl

    在struts.xml 中使用ognl有两种方面的需求: 1. 在action执行时从struts.xml中读取param标签中的值,然后调用标签name属性相应的set方法对action中的变量赋值 ...

  7. JS开发windows phone8.1系列之2

    http://msdn.microsoft.com/zh-cn/library/windows/apps/dn629636.aspx Windows.Storage.ApplicationData.r ...

  8. poj3292-Semi-prime H-numbers(筛法打表)

    一,题意:  一个H-number是所有的模四余一的数.(x=4*k+1)  如果一个H-number是H-primes 当且仅当它的因数只有1和它本身(除1外). 一个H-number是H-semi ...

  9. ssh secure shell

    ssh secure shell 和securecrt xhell一样,都是终端工具

  10. P1072 Hankson 的趣味题

    #include<bits/stdc++.h> #define inf 1000000000 #define ll long long using namespace std; int r ...