keytool - 密钥和证书管理工具(二)

2014-11-23 23:14:05 · 作者: · 浏览: 1
Tool,可通过 “编辑”菜单中的“更改密钥仓库”命令来指定密钥仓库类型。

如果没有明确指定一个密钥仓库类型,这些工具将只是根据安全属性文件中指定的 keystore.type 属性值来选择密钥仓库实现。安全属性文件名为 java.security,它位于 JDK 安全属性目录 java.home/lib/security 中,其中 java.home 为 JDK 的安装目录。

每个工具都先获取 keystore.type 的值,然后检查所有当前已安装的提供者直到找到一个实现所要求类型的密钥仓库的实现为止。然后就使用该提供者的密钥仓库实现。

KeyStore 类定义了一个名为 getDefaultType 的静态方法,它可让应用程序或 applet 检索 keystore.type 属性的值。以下代码将创建缺省密钥仓库类型(此类型由 keystore.type 属性所指定。)的一个实例:

KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
缺省的密钥仓库类型是“jks”(这是由“SUN”提供者提供的密钥仓库实现的专用类型)。它在安全性属性文件中由下行进行指定:
keystore.type=jks
要让工具使用不同于缺省类型的密钥仓库实现,可更改此行,指定不同的密钥仓库类型。
例如,如果您有一个这样的提供者包,它给出一个名为“pkcs12”的密钥仓库类型的密钥仓库实现,则可将上面那行改为:

keystore.type=pkcs12
注意:密钥仓库类型的命名中大小写无关紧要。例如,“JKS”将被认为是与“jks”相同的。
支持的算法和密钥大小
keytool 允许用户指定任何注册了的加密服务提供者所提供的密钥对生成和签名算法。也就是说,各种命令中的 keyalg 和 sigalg 选项必须得到提供者的实现的支持。缺省的密钥对生成算法是“DSA”。签名算法是从所涉及私钥的算法推导来的:如果所涉及的私钥是“DSA”类型,则缺省的签名算法为“SHA1withDSA”,如果所涉及的私钥是“RSA”类型,则缺省的签名算法为“ MD5withRSA”。
在生成 DSA 密钥对时,密钥大小