keytool密钥和证书管理工具-使用详解
上一篇 / 下一篇 2008-07-14 20:55:48 / 个人分类:日常收集
- 文件版本: V1.0
- 开发商: 本站原创
- 文件来源: 本地
- 界面语言: 简体中文
- 授权方式: 免费
- 运行平台: Win9X/Win2000/WinXP
管理由私钥和 认证相关公钥的 X.509 证书链组成的密钥仓库(数据库)。还管理来自可信任实体的证书。
#k+y)Eg*_&E0结构51Testing软件测试网ekfVd3[Y]
keytool [ 命令 ]
7Fm4EpvI/o:f1ep0说明51Testing软件测试网ZoN |z
keytool 是个密钥和证书管理工具。它使用户能够管理自己的公钥/私钥对及相关证书,用于(通过数字签名)自我认证(用户向别的用户/服务认证自己)或数据完整性以及认证服务。它还允许用户储存他们的通信对等者的公钥(以证书形式)。
;^{H nz7M5U[0证书是来自一个实体(个人、公司等)的经数字签名的声明,它声明某些其它实体的公钥(及其它信息)具有某一的特定值(参见证书)。当数据被数字化签名后,校验签名即可检查数据的完整性和真实性。完整性的意思是数据没有被修改或损坏过,真实性的意思是数据的确是来自声称创建了该数据和对它进行了签名的实体。
-J@%t.M3y#O051Testing软件测试网iu1R,L`p]+K
keytool 将密钥和证书储存在一个所谓的密钥仓库中。缺省的密钥仓库实现将密钥仓库实现为一个文件。它用口令来保护私钥。51Testing软件测试网!I2L;p4|8k
9j$ax/q$G-Ep0jarsigner 工具利用密钥仓库中的信息来产生或校验 Java 存档 (JAR) 文件的数字签名 (JAR 文件将类文件、图象、声音和/或其它数字化数据打包在一个文件中)。jarsigner 用 JAR 文件所附带的证书(包含于 JAR 文件的签名块文件中)来校验 JAR 文件的数字签名,然后检查该证书的公钥是否“可信任”,即是否包括在指定的密钥仓库中。
7S9Woo zVr051Testing软件测试网e)I)P8W(w#o/_ o aW
请注意:keytool 和 jarsigner 工具完全取代了 JDK 1.1 中提供的 javakey 工具。这些新工具所提供的功能比 javakey 提供的多,包括能够用口令来保护密钥仓库和私钥,以及除了能够生成签名外还可以校验它们。新的密钥仓库体系结构取代了 javakey 所创建和管理的身份数据库。可以利用 -identitydb keytool 命令将信息从身份数据库导入 密钥仓库。51Testing软件测试网;jY&c4R}E-H
51Testing软件测试网KZ3g-XNtg
密钥仓库项51Testing软件测试网$V7ja^X'IC
在密钥仓库中有两种不同类型的项:
h^X"i"P-cT.B(P0
xr Tr WK0密钥项 - 每项存放极为敏感的加密密钥信息,这种信息以一种受保护的格式储存以防止未授权的访问。通常,储存在这类项中的密钥是机密密钥,或是伴有用于认证相应公钥用的证书“链”的私钥。keytool 和 jarsigner 工具只处理后一类型的项,即私钥及其关联的证书链。51Testing软件测试网9F^@ }M
可信任的证书项 - 每项包含一个属于另一团体的公钥证书。它之所以叫做“可信任的证书”,是因为密钥仓库的拥有者相信证书中的公钥确实属于证书“主体”(拥有者)识别的身份。证书签发人通过对证书签名来保证这点。
,X:z|}4]aLD0密钥仓库使用的别名51Testing软件测试网{mv9@g7yR
对所有的密钥仓库项(密钥项和可信任的证书项)的访问都要通过唯一的别名来进行。别名不区分大小写,即别名 Hugo 和 hugo 指的是同一密钥仓库项。51Testing软件测试网*gFY.e#gi n#K
当用 -genkey 命令来生成密钥对(公钥和私钥)或用 -import 命令来将证书或证书链加到可信任证书的清单中,以增加一个实体到密钥仓库中,必须指定了一个别名。后续 keytool 命令必须使用这一相同的别名来引用该实体。51Testing软件测试网%X-c@vr-b
)Wf S6Nn8y:O4f+ewE0例如,假设您用别名 duke 生成了新的公钥/私钥密钥对并将公钥用以下命令打包到自签名证书中(参见证书链):
pZc6ESwbCrE0
U2W0[vu ]0eP0 keytool -genkey -alias duke -keypass dukekeypasswd51Testing软件测试网1gS5L4z6S6Kj0s
这指定了一个初始口令“dukekeypasswd”,接下来的命令都要使用该口令才能访问与别名 duke 相关联的私钥。以后如果您想更改 duke 的 私钥口令,可用类似下述的命令:51Testing软件测试网#d`KhC
keytool -keypasswd -alias duke -keypass dukekeypasswd -new newpass
ELp5IUWr0这将把口令从“dukekeypasswd”改为“newpass”。51Testing软件测试网t9e2j_9s,l
请注意:实际上,除非是作为测试目的或是在安全的系统上,否则不应在命令行或脚本中指定口令。如果没有在命令行上指定所要求的口令选项,您将会得到要求输入口令的提示。当在口令提示符下键入口令时,口令将被即时显示出来(键入什么就显示什么),因此,要小心,不要当着任何人的面键入口令。
hdh5{2s*r051Testing软件测试网?5E'p"Aoo-kFMW3K
密钥仓库位置
)t&R v4zn+c0每个 keytool 命令都有一个 -keystore 选项,用于指定 keytool 管理的密钥仓库的永久密钥仓库文件名称及其位置。缺省情况下,密钥仓库储存在用户宿主目录(由系统属性的“user.home”决定)中名为 .keystore 的文件中。在 Solaris 系统中“user.home”缺省为用户的宿主目录。
#k+y)Eg*_&E0结构51Testing软件测试网ekfVd3[Y]
keytool [ 命令 ]
7Fm4EpvI/o:f1ep0说明51Testing软件测试网ZoN |z
keytool 是个密钥和证书管理工具。它使用户能够管理自己的公钥/私钥对及相关证书,用于(通过数字签名)自我认证(用户向别的用户/服务认证自己)或数据完整性以及认证服务。它还允许用户储存他们的通信对等者的公钥(以证书形式)。
;^{H nz7M5U[0证书是来自一个实体(个人、公司等)的经数字签名的声明,它声明某些其它实体的公钥(及其它信息)具有某一的特定值(参见证书)。当数据被数字化签名后,校验签名即可检查数据的完整性和真实性。完整性的意思是数据没有被修改或损坏过,真实性的意思是数据的确是来自声称创建了该数据和对它进行了签名的实体。
-J@%t.M3y#O051Testing软件测试网iu1R,L`p]+K
keytool 将密钥和证书储存在一个所谓的密钥仓库中。缺省的密钥仓库实现将密钥仓库实现为一个文件。它用口令来保护私钥。51Testing软件测试网!I2L;p4|8k
9j$ax/q$G-Ep0jarsigner 工具利用密钥仓库中的信息来产生或校验 Java 存档 (JAR) 文件的数字签名 (JAR 文件将类文件、图象、声音和/或其它数字化数据打包在一个文件中)。jarsigner 用 JAR 文件所附带的证书(包含于 JAR 文件的签名块文件中)来校验 JAR 文件的数字签名,然后检查该证书的公钥是否“可信任”,即是否包括在指定的密钥仓库中。
7S9Woo zVr051Testing软件测试网e)I)P8W(w#o/_ o aW
请注意:keytool 和 jarsigner 工具完全取代了 JDK 1.1 中提供的 javakey 工具。这些新工具所提供的功能比 javakey 提供的多,包括能够用口令来保护密钥仓库和私钥,以及除了能够生成签名外还可以校验它们。新的密钥仓库体系结构取代了 javakey 所创建和管理的身份数据库。可以利用 -identitydb keytool 命令将信息从身份数据库导入 密钥仓库。51Testing软件测试网;jY&c4R}E-H
51Testing软件测试网KZ3g-XNtg
密钥仓库项51Testing软件测试网$V7ja^X'IC
在密钥仓库中有两种不同类型的项:
h^X"i"P-cT.B(P0
xr Tr WK0密钥项 - 每项存放极为敏感的加密密钥信息,这种信息以一种受保护的格式储存以防止未授权的访问。通常,储存在这类项中的密钥是机密密钥,或是伴有用于认证相应公钥用的证书“链”的私钥。keytool 和 jarsigner 工具只处理后一类型的项,即私钥及其关联的证书链。51Testing软件测试网9F^@ }M
可信任的证书项 - 每项包含一个属于另一团体的公钥证书。它之所以叫做“可信任的证书”,是因为密钥仓库的拥有者相信证书中的公钥确实属于证书“主体”(拥有者)识别的身份。证书签发人通过对证书签名来保证这点。
,X:z|}4]aLD0密钥仓库使用的别名51Testing软件测试网{mv9@g7yR
对所有的密钥仓库项(密钥项和可信任的证书项)的访问都要通过唯一的别名来进行。别名不区分大小写,即别名 Hugo 和 hugo 指的是同一密钥仓库项。51Testing软件测试网*gFY.e#gi n#K
当用 -genkey 命令来生成密钥对(公钥和私钥)或用 -import 命令来将证书或证书链加到可信任证书的清单中,以增加一个实体到密钥仓库中,必须指定了一个别名。后续 keytool 命令必须使用这一相同的别名来引用该实体。51Testing软件测试网%X-c@vr-b
)Wf S6Nn8y:O4f+ewE0例如,假设您用别名 duke 生成了新的公钥/私钥密钥对并将公钥用以下命令打包到自签名证书中(参见证书链):
pZc6ESwbCrE0
U2W0[vu ]0eP0 keytool -genkey -alias duke -keypass dukekeypasswd51Testing软件测试网1gS5L4z6S6Kj0s
这指定了一个初始口令“dukekeypasswd”,接下来的命令都要使用该口令才能访问与别名 duke 相关联的私钥。以后如果您想更改 duke 的 私钥口令,可用类似下述的命令:51Testing软件测试网#d`KhC
keytool -keypasswd -alias duke -keypass dukekeypasswd -new newpass
ELp5IUWr0这将把口令从“dukekeypasswd”改为“newpass”。51Testing软件测试网t9e2j_9s,l
请注意:实际上,除非是作为测试目的或是在安全的系统上,否则不应在命令行或脚本中指定口令。如果没有在命令行上指定所要求的口令选项,您将会得到要求输入口令的提示。当在口令提示符下键入口令时,口令将被即时显示出来(键入什么就显示什么),因此,要小心,不要当着任何人的面键入口令。
hdh5{2s*r051Testing软件测试网?5E'p"Aoo-kFMW3K
密钥仓库位置
)t&R v4zn+c0每个 keytool 命令都有一个 -keystore 选项,用于指定 keytool 管理的密钥仓库的永久密钥仓库文件名称及其位置。缺省情况下,密钥仓库储存在用户宿主目录(由系统属性的“user.home”决定)中名为 .keystore 的文件中。在 Solaris 系统中“user.home”缺省为用户的宿主目录。