设为首页 加入收藏

TOP

实例分析JVM安全体系:双亲委派、命名空间、保护域、策略(十三)
2017-09-30 16:34:44 】 浏览:3989
Tags:实例分析 JVM 安全 体系 双亲 委派 命名 空间 保护 策略
nbsp;          } catch (IOException e) {                 }finally{                     try{                         fr.close();                     }catch (IOException e){                     }                 }             }catch (IOException e) {             }     } }

1.将Friend和Stranger分别导出为jar文件,放在指定目录(这里放在”E:\java\security”目录下)以待不同的机构 进行签名,Friend所在包假定为比较有信用的机构”friend”进行签名,而Stranger所在包假定为一个不受信任的机构”stranger” 进行签名。
(1).调用命令 jar cvf xxx.jar <_ClassPath> 进行打包
(注意打包后,若没有把jar包放在单独的目录下,需要删除原java文件编译产生的class文件,以免程序运行直接加载目录下class文件而非包内的class文件)
这里分别调用
jar cvf friend.jar com/ice/security/friend/*.class 将friend包内的class文件打包

jar cvf stranger.jar com/ice/security/stranger/*.class 将friend包内的class文件打包

(2).使用keytool可以用来生成新的密钥对,并与一个别名关联,用密码加以保护存放在keystore文件中
使用keytool -genkey -alias friend -keypass 123456 -validity 10000 -keystore mykey 命令:

该密钥的别名是friend,别名密码是123456(至少6位),有效期是10000天,存放在一个mykey的keystore文件中,keystore密码为myfriendkey

类似地,生成一个别名stranger的密钥对

为了方便起见,两个不同的签名者stranger和friend的密钥均存放在mykey中,mykey的访问密码是myfriendkey,密钥的访问密码都是123456

可以看到在目录下生成了一个mykey文件
(3).使用jarsigner -keystore -storepass -keypass 命令进行签名
这里:
jarsigner -keystore mykey -storepass myfriendkey -keypass 123456 friend.jar friend
jarsigner -keystore mykey -storepass myfriendkey -keypass 123456 stranger.jar stranger
使用friend密钥对friend.jar进行签名,使用stranger密钥对stranger.jar进行签名

(4).最后可以使用
keytool -export -alias -storepass -file -keystore
这里分别用:
keytool -export -alias friend -storepass myfriendkey -file friend.cer -keystore mykey
keytool -export -alias stranger -storepass myfriendkey -file stranger.cer -keystore mykey
导出friend和stranger的发行证书

 

2.编写自己的策略文件,放在当前目录下

//mypolicy.txt
keystore "mykey";

grant signedBy "friend"{
    permission java.io.FilePermission "friend.txt","read";
    permission java.io.FilePermission "stranger.txt","read";
};

grant signedBy "stranger"{
    permission java.io.FilePermission "stranger.txt","read";
};

grant codeBase "file:${com.ice.home}/com*"{
    permission java.io.FilePermission "friend.txt","read";
    permission java.io.FilePermission "stranger.txt","read";
};

这里friend签名的类和${com.ice.home}.com(后面设置 为”e:\java\security\com”,存放着Doer接口的class文件)可以读取”friend.txt” 和”stranger.txt”,而stranger签名的类只能读取”stranger.txt”
(这里为了方便,直接使用myke

首页 上一页 10 11 12 13 下一页 尾页 13/13/13
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇实例探索Class文件 下一篇源码分析:Java堆的创建

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目