分享
 
 
 

JavaTM安全体系结构 6

王朝java/jsp·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

JavaTM安全体系结构(JDK1.2)

6. 安全性管理

6.1 管理Applet和应用程序

目前,所有JDK系统代码都是调用SecurityManager方法以检查现行策略并进行访问控制检查。不管一个Applet是在何时运行,都典型地安装一个安全管理器(SecurityManager实现);appletviewer和大多数浏览器(包括Netscape和Microsoft的浏览器)都安装了安全管理器。

当运行一个应用程序时,安全管理器不能被自动安装。为了象运行下载的Applet一样将同样的安全策略应用于一个在本地文件系统中的应用程序,运行该应用程序的用户必须使用新的 "-Djava.security.manager"命令行自变量(它设置java.security.manager的值)来调用Java虚拟机,如下所示:

java -Djava.security.manager SomeApp

或者,该应用程序本身必须调用java.lang.System类中的setSecurityManager方法,以安装一个安全管理器。

可以用一个命令行来指定一个特殊的安全管理器。方法是在"-Djava.security.manager"后加上一个等号,再加上将作为安全管理器使用的类名。如下所示:

java -Djava.security.manager=COM.abc.MySecMgr SomeApp

如果没有安全管理器被指定,则将使用内置缺省安全管理器(除非应用程序安装了一个不同的安全管理器)。下列几行命令是等价的,它们都会安装缺省安全管理器:

java -Djava.security.manager SomeApp

java -Djava.security.manager= "" SomeApp

java -Djava.security.manager=default SomeApp

JDK1.2包括一个名为java.class.path的属性。那些被存储在本地文件系统但不被当作基础类的类应该在这个路径下。在这个路径下的类用安全类装载器来装载,并且符合当前推行的安全策略。

还有一个 "-Djava.security.policy"命令行自变量,它的用法决定了应采用什么样的策略文件。这个命令行自变量在"缺省系统和用户策略文件"一节中详述。一般来说,如果你在一个命令行中未包括 "-Djava.security.policy",则在安全属性文件中所指定的策略文件将被使用。

当调用一个应用文件的执行时,你可以使用一个"-Djava.security.policy" 命令行自变量来指定一个附加的或不同的策略文件。举例如下:如果你键入以下命令行(这里的pURL是一个指定策略文件位置的URL),除了所有在安全属性中指定的策略文件外,上述由URL所指定的策略文件也将被装载。

java -Djava.security.manager -Djava.security.policy= pURL SomeApp

如果你不这样做,而是使用如下命令,即使用双等号来代替上面的单等号,则只有指定的策略文件被使用,其它策略文件将被忽略:

java -Djava.security.manager -Djava.security.policy = = pURL SomeApp

6.2 SecurityManager和AccessController

新的访问控制机制是全部向后兼容的。例如,在SecurityManager中的所有check方法仍然被支持(尽管它们的大多数实现已被变为调用新的SecurityManager 中的checkPermission方法,它们的缺省实现调用AccessController 的checkPermission方法)。注意:某些内部安全检查可能驻留在SecurityManager类中,除非它能被参数化。

到目前为止,我们还没有修改任何JDK代码系统以调用AccessController来代替调用SecurityManager(和检查类装载器的存在),这是由于现有的第三方应用程序可能创建SecurityManager子类并使check方法用户化。事实上,我们增加了一个新的方法SecurityManager.checkPermission,它缺省地直接调用AccessController.checkPermission。

为了理解SecurityManager和AccessController之间的关系,需注意:SecurityManager代表了一个访问控制的核心概念,而AccessController是实现一个特定的访问控制算法(利用例如doPrivileged方法这样一些特殊的性质)。通过保持SecurityManager的不断更新,我们维护向后兼容性(例如,兼容那些基于早期JDK版本而编写他们自己的安全管理器类的应用程序)和灵活性(例如,某些程序员希望客户化安全模式以实现强制性存取控制和多层安全控制)。通过提供AccessController,我们内置了算法。我们认为该算法是最具约束性的并且可以解脱了程序员在许多情况下不得不编写大量安全代码的重负。

我们鼓励在应用程序代码中使用AccessController, 用户化安全管理器(通过建立子类)应该是最后一种手段,并且在做时应格外小心。另外,一个用户化的安全管理器(如在调用标准安全检查之前都要检查当日时间的管理器)应该也能够利用由AccessController在任何适当的时候提供的算法。

6.3 辅助工具

这一节将简单地介绍三种有助于部署新的安全性能的工具。这些工具有可能在将来打包到一起。

有关这些工具更详尽的文本可在JDK发布目录的子目录中找到:

/doc/tooldocs/solaris 和 /doc/tooldocs/win32

这里的路径分隔符在Windows系统中实际是 "\"。

例如:如果JDK被安装在Solaris系统中一个名为 "/jdk1.2"的目录中,那么,为Solaris用户和Windows用户的keytool文本则分别在下列目录中:

/jdk1.2/docs/tooldocs/solaris/keytool.html

/jdk1.2/docs/tooldocs/win32/keytool.html

如果JDK被安装在Windows系统中一个名为 "C:\jdk1.2"的目录中,那么,为Solaris用户和Windows用户的keytool文本则分别在下列目录中:

C:\jdk1.2\docs\tooldocs\solaris\keytool.html

C:\jdk1.2\docs\tooldocs\win32\keytool.html

6.3.1 密钥和证书管理工具

keytool是一个密钥和证书管理工具。它使用户可以自己管理自己的公共/私有密钥对及相关的用来自我认证(自我认证是用户向其他用户/服务进行自我身份说明)的证书,或使用数字签字来管理数据完整性及认证服务。认证信息既包括X.509证书的序列(链)和一个相关的私有密钥(它可被所谓的"别名"来引用)。这个工具还可以管理证书(它是被用户所"信任"的),这些证书作为认证信息存储在同一个数据库中,并且可被"别名"来引用。

keytool在一个所谓的keystore中存储密钥和证书。缺省keystore是以文件形式来实现的。它用口令来保护私有密钥。

X.509证书的链是由一个被称为认证中心 (或CA) 的组织所提供的。身份(包括CA)使用他们的私有密钥来认证他们与对象(如使用SSL保护的通道)的关联、与他们所签署的代码文档的关联或与他们所发布的X.509证书(包括CA)的关联等。作为一种"解铃"工具,使用-genkey命令所生成的证书可能被使用到一个认证中心返回一个证书链为止。

在这个数据库中的私有密钥总是以加密的形式存储,它使得这些私有密钥很难被非法得到。访问或修改数据库需要口令。这些私有密钥是使用"口令"来加密的,它可能有几个词那样长。如果口令被丢失,则那些认证密钥将不能被恢复。

事实上,每个在keystore中的私有密钥都可以使用它自己的口令进行保护,它与保护keystore总的口令可能相同,也可能不同。

这个工具是要在(在目前情况下)命令行中使用。在命令行中,你可以将"keytool" 作为一个命令而直接键入。keytool是一个可执行Java类的命令文件,它与JDK被建在一起。

该命令的选项,可以任何顺序提供。不正确的选项或键入 "keytool -help"会在输出设备上(如一个外壳Window)输出该一个工具用法小结。如下所示:

% keytool -help

KeyTool usage:

-certreq [-v] [-alias ] [-sigalg ] [-file ] [-keypass ] [-keystore ] [-storepass ] [-storetype storetype] -delete [-v] -alias [-keystore ] [-storepass ] [-storetype storetype] -export [-v] [rfc] [-alias ] [-file ] [-keystore ] [-storepass ] [-storetype storetype] -genkey [-v] [-alias ] [-keyalg ] [-keysize ] [-sigalg ] [-dname ] [-validity ] [-keypass ] [-keystore ] [-storepass ] [-storetype storetype] -help -identitydb [-v] [-file ] [-keystore ] [-storepass ] [-storetype storetype]-import [-v] [-noprompt] [-alias ] [-file ] [-keypass ] [-keystore ] [-storepass ] [-storetype storetype] -keyclone [-v] [-alias ] -dest [-keypass ] [-new ] [-keystore ] [-storepass ] [-storetype storetype] -keypasswd [-v] [-alias ] [-keypass ] [-new ] [-keystore ] [-storepass ] [-storetype storetype] -list [-v | -rfc] [-alias ] [-keystore ] [-storepass ] [-storetype storetype]-printcert [-v] [-file ] -selfcert [-v] [-alias ] [-sigalg ] [-dname ] [-validity ] [-keypass ] [-keystore ] [-storepass ] [-storetype storetype] -storepasswd [-v] [-new ] [-keystore ] [-storepass ] [-storetype storetype] 6.3.2 策略工具 策略工具是一个图形用户界面(如屏幕图形所示),它帮助用户(如系统管理员)指定、生成、编辑、输出或输入一个安全策略。该工具从命令行作为policytool被调用。这又是一个命令文件,它与JDK建在一起来调用适当的(非公共的)实现类。 详细信息请看策略工具用法信息的有关文本和最新的屏幕图形。上述文本存储在policytool.html文件中,在如下路径: /docs/tooldocs/solaris/ 或 /docs/toodocs/win32/ 这里的文件分隔符在Windows系统中实际是反斜线。

6.3.3 JAR签字和校验工具 jarsigner工具可被用来数字地签署Java文档(JAR文件)并校验这个签字。与策略工具相似,这个工具依赖于由keytool管理的keystore。它的用法可快速小结如下: % jarsignerUsage: jarsigner [options] jar-file alias jarsigner -verify [options] jar-file [-keystore ] keystore file location [-storepass ] password for keystore integrity [-keypass ] password for private key (if different) [-sigfile ] name of .SF/.DSA file [-signedjar ] name of signed JAR file [-verify] verify a signed JAR file [-verbose] verbose output when signing/verifying [-certs] display certificates when verbose and verifying [-internalsf] include .SF file inside signature block [-sectionsonly] don't compute hash of entire manifest这个工具也是与JDK建在一起的命令文件。我们希望这个工具和jar工具命令能够在将来合并,以形成一个单一的用来创建JARs的(签字或不签字的)命令行原语。 ..........|Next|..........

欢迎与我们联系:webmaster@prc.sun.com

版权所有 1997-1998 Sun(中国)公司,北京南礼士路66号建威大厦16层

All rights reserved.Legal Terms

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有