Policy Tool — 策略文件创建和管理工具[3]

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 vincintcao 的 blog

密钥仓库类型定义密钥仓库信息的存储和数据格式,以及用于保护密钥仓库中的私钥和密钥仓库自身完整性的算法。如果您没有指定类型,则假定指定的是安全属性文件中的“keystore.type”属性值所指定的类型。该属性的缺省值为“jks”,指定 sun microsystems 所支持的专用密钥仓库类型。

通常认为执行代码来自于特定的“代码源”。代码源不仅可以包括 applet(或应用程序)所始发自的 codebase 位置 (url),而且还可以包括对一个或多个(符号的)别名的引用,这些别名所来自的密钥仓库指定的密钥仓库项包含与签名该代码的私钥相对应的公钥。

策略文件中的每个策略项都包含以下项目:

  • 可选的 codebase 项,指定代码所始发自的 url 位置,
  • 可选的 signedby 项,指定来自密钥仓库的别名,作用是引用其私钥用于对代码进行签名的签名人,以及
  • 一个或多个 权限 项,指定将何种权限授予来自指定 codebase 并由指定的 signedby 别名所签名的代码。

policy tool 用法

启动 policy tool

要启动 policy tool,仅仅需要在命令行中键入以下命令。

  policytool

这将调出“policy tool”窗口。

无论何时启动 policy tool,policy tool 都将试图用来自有时称为“用户策略文件”的策略信息来填写本窗口。在缺省情况下,用户策略文件是宿主目录下名为 .java.policy 的文件。如果 policy tool 没能查找到用户策略文件,则它将报告该情况并且显示空白的“policy tool”窗口(即有标题和按钮但是其中没有数据的窗口):

空白的策略工具窗口

然后,您可以继续打开您想要使用的任何策略文件或者创建新策略文件,方法是添加策略项(同时还可指定密钥仓库)和保存文件

第一次运行policy tool时,将不会有用户策略文件(除非已经手动创建了一个用户策略文件)。

创建新的策略文件

要创建新的策略文件,选择 file 菜单下的 new 命令即可。该操作将关闭当前打开的策略文件(如果有,必要时会在关闭之前首先提示您保存该文件)并且调出新的policy tool窗口,即有标题和按钮但是其中没有数据的窗口。

请注意: 在第一次运行 policy tool 时,不必这么做。因为该工具试图打开用户策略文件而用户策略文件还不存在(除非已经手动创建),所以该工具将调出其中没有数据的窗口。

一旦您有了新的 policy tool 窗口之后,您就可以创建策略项并且指定密钥仓库(如果有任何策略项指定了密钥仓库别名)。您可以随时保存策略文件

打开另一策略文件

要处理另一策略文件而不是当前处理的文件(如果有),请选择 file 菜单下的 open 命令。

这将关闭当前打开的策略文件(如果有,必要时会在关闭之前将首先提示是否保存该文件)并且呈现“open”对话框,您可以使用该对话框来浏览目录结构,直到进入包含要处理的策略文件的目录。选择该文件,然后选择 ok 按钮。

随后,“policy tool”窗口中将填写来自策略文件的信息,包括策略文件名、密钥仓库 url (如果有)以及策略文件中每个策略项的 codebase 和 signedby 部分。

指定密钥仓库

要为策略项的 signedby 部分中所指定的别名指定包含密钥信息的密钥仓库,请选择 edit 菜单下的 change keystore 命令。

这将调出一个对话框,在对话框中可以指定新的密钥仓库 url,也可指定密钥仓库类型。

例如,要指定 /tests/ 目录中名为 "mykeystore" 的密钥仓库,应将下列 file: url 键入标签为 "new keystore url" 的文本框。

  file:/tests/mykeystore

要将密钥仓库类型指定为“jks”(sun microsystems 所支持的专用密钥仓库类型),请在标签为“new keystore type”的文本框中键入以下内容。

  jks

当完成指定密钥仓库 url 和类型(如果有)时,请选择 ok(或者也可以选择 cancel 来取消操作)。如果没有取消,则标签为“keystore:” 的文本框中现在就填上了密钥仓库 url 和类型。

添加新策略项

要添加新的策略项,请选择主“policy tool”窗口中的 add policy entry 按钮。

这将调出“策略项”对话框:

空白的添加项对话框

利用该对话框,您可以指定

  • 可选的 codebase 项,指明代码所始发自的 url 位置。例如,要指明代码是来自于本地 /javasoft/tests/ 目录,请将以下文件 url 键入到标签为 codebase 的文本框中:
      file:/javasoft/tests/
    

     

  • 可选的 signedby 项,指明来自密钥仓库的别名,作用是引用其私钥用于对代码进行签名的签名人。例如,要指明“duke”别名,只需在标签为 signedby 的文本框中键入以下内容:
      duke
    
  • 一个或多个权限项,指明将何种权限授予来自 codebase 和 signedby 值所指示的代码源的代码(或者如果没有指定这样的值,则指明将何种权限授予其它任何代码)。请参阅添加新权限

signedby 值是字符串别名,它被映射到(使用密钥仓库)与签名人相关联的公钥集。这些密钥的作用是校验来自指定代码源的类是否确实由这些签名人签名。

signedby 值可以是逗号分隔的字符串,其中可以包含多个签名人的名字,例如 “adam,eve,charles”,这意味着“由 adam 和 eve 以及 charles 签名”(即,其关系是 and,而不是 or)。

signedby 值是可选的,这是因为:如果忽略该值,则表示“任何签名人”,换句话说,对代码是否进行签名无关紧要。同样,如果没有 codebase 项,则表示“任何代码”;代码始发自何处无关紧要。

因此,如果没有 codebase 项,则所有由指定别名签名的代码将被授予指定的权限。如果没有 signedby 项,则所有来自指定的 codebase 的代码将被授予指定的权限,而不管代码是否已经被签名,以及由谁签名。如果没有 codebase 项,也没有 signedby 项,则所有代码将被授予指定的权限。

本文关键:Java Policy 安全 策略
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top