- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
java代码签名和策略文件使用的一个简单示例:
1.首先创建一个签名,过程如下:
使用的命令为:keytool –genkey –alias friend –keypass friend4life –validity 10000 –keystore ijvmkeys
其中,-alias friend 表示创建的密钥对的别名为friend
-keypass friend4life表示创建的密钥对的密码为friend4life
-validity 10000 表示此密钥对的生存周期为10000天
-keystore ijvmkeys 表示存储密钥对的文件为当前目录下的ijvmkeys,如果没有此文件就创建一个。
创建的过程中要求输入密码,如果是第一次创建文件就输入自己的密码,如果要向一个密钥文件中添加新的密钥,就要输入已有的签名,本例密码为ijvm2ed
2.创建一个.jar文件
本文创建一个读取文件的类,代码如下:
arg[0]为所要读取文件的文件名,此java文件名位policyTest.java
利用eclipse中的菜单命令Export方式将其打包为文件policyTest.jar,要生成可执行的jar文件。
3.进行签名
将第二步创建的policyTest.jar文件和第一步创建的ijvmkeys放在一个目录下。在进行签名前,解压policyTest.jar,打开其中的META-INF文件夹,可以看到:里面只有一个名为MANIFEST.MF的文件。
现在对policyTest.jar进行代码签名,输入命令如下:
其中,
-keystore ijvmkeys 表示保存密钥的文件为当前目录下地ijvmkeys
-storepass ijvm2ed 表示保存密钥的文件的密码为ijvm2ed
-keypass friend4life 表示密钥对的密码为friend4life
policyTest.jar 为待签名的jar包为当前目录下的policyTest.jar
friend 表示用于签名的密钥名为friend
执行了本命令后,再次解压policyTest.jar,打开META-INF文件夹,可以发现多了两个文件:FRIEND.DSA和FRIEND.SF,说明jar包已经经过了签名,如图:、
4.创建策略文件
策略文件用来说明被签名程序的权限,java默认的策略文件包括系统策略文件和用户自定义的策略文件,指定这两个文件默认位置的文件为java.security,它存放在系统属性java.home目录下的lib/security下,可以用下面的java语句得到系统变量java.home:
System.getProperties().getProperty(java.home);
然后根据这个值找到java.security文件。
java.security文件中指定了系统策略文件和用户自定义策略文件的默认存储位置,如下:
反色的内容分别指定了指定了系统策略文件和用户自定义策略文件的默认存储位置。
user.home可以用下面的java语句得到:
System.getProperties().getProperty(user.home);
也可以在其它地方创建自己的策略文件,本文在与policyTest.jar同一个目录下创建策略文件policyfile.txt,内容如下图所示:
第一句keystore “ijvmkeys”说明,密钥别名指向当前目录下存储名为“ijvmkeys”的文件中的证书。
下面的内容表示授予以friend签名的程序读取当前目录下的文件“question.txt”和“answer.txt”的权限。
5.运行policyTest.jar
直接使用java –jar policyTest.jar answer.txt,不管程序policyTest.jar是否被签名,都不会有什么影响,文件被读取,显示文件中的内容,如图:
使用命令,java –Djava.security.manager –Djava.security.policy=policyfile.txt –jar policyTest.jar answer.txt,当policyTest.jar未签名时,则会出现拒绝访问的错误,如下图所示:
当policyTest.jar已经经过friend签名时,则可以顺利读出,如图:
命令中,-Djava.security.policy=policyfile.txt 表示载入的策略文件。policyTest.jar为java的jar包,answer.txt为命令行参数,在此程序中表示要读取的文件。
文档评论(0)