keytool - 密钥和证书管理工具

管理由私钥和认证相关公钥的 X.509 证书链组成的密钥仓库(数据库)。还管理来自可信任实体的证书。
结构
keytool [ commands ]
说明
keytool 是个密钥和证书管理工具。它使用户能够管理自己的公钥/私钥对及相关证书,用于(通过数字签名)自我认证(用户向别的用户/服务认证自己)或数据完整性以及认证服务。它还允许用户储存他们的通信对等者的公钥(以证书形式)。
证书是来自一个实体(个人、公司等)的经数字签名的声明,它声明某些其它实体的公钥(及其它信息)具有某一的特定值(参见证书)。当数据被数字化签名后,校验签名即可检查数据的完整性和真实性。完整性的意思是数据没有被修改或损坏过,真实性的意思是数据的确是来自声称创建了该数据和对它进行了签名的实体。

keytool 将密钥和证书储存在一个所谓的密钥仓库中。缺省的密钥仓库实现将密钥仓库实现为一个文件。它用口令来保护私钥。

jarsigner 工具利用密钥仓库中的信息来产生或校验 Java 归档 (JAR) 文件的数字签名。(JAR 文件将类文件、图像、声音和/或其它数字化数据打包在一个文件中)。jarsigner 用 JAR 文件所附带的证书(包含于 JAR 文件的签名块文件中)来校验 JAR 文件的数字签名,然后检查该证书的公钥是否“可信任”,即是否包括在指定的密钥仓库中。

请注意:keytool 和 jarsigner 工具完全取代了 JDK 1.1 中提供的 javakey 工具。这些新工具所提供的功能比 javakey 提供的多,包括能够用口令来保护密钥仓库和私钥,以及除了能够生成签名外还可以校验它们。新的密钥仓库体系结构取代了 javakey 所创建和管理的身份数据库。可以利用 -identitydb keytool 命令将信息从身份数据库导入密钥仓库。

密钥仓库项
在密钥仓库中有两种不同类型的项:

密钥项 - 每项都存放极为敏感的加密密钥信息,这种信息以一种受保护的格式储存以防止未授权的访问。通常,储存在这类项中的密钥是机密密钥,或是伴有用于认证相应公钥的证书“链”的私钥。keytool 和 jarsigner 工具只处理后一类型的项,即私钥及其关联的证书链。
可信任的证书项 - 每项包含一个属于另一方的公钥证书。它之所以叫做“可信任的证书”,是因为密钥仓库的拥有者相信证书中的公钥确实属于证书“主体”(拥有者)所识别的身份。证书发人通过对证书签名来保证这点。
密钥仓库别名
对所有的密钥仓库项(密钥项和可信任的证书项)的访问都要通过唯一的别名来进行。别名不区分大小写,即别名 Hugo 和 hugo 指的是同一密钥仓库项。
当用 -genkey 命令来生成密钥对(公钥和私钥)或用 -import 命令来将证书或证书链加到可信任证书的清单中以增加一个实体到密钥仓库时,必须指定一个别名。后续 keytool 命令必须使用这一相同的别名来引用该实体。

例如,假设您用别名 duke 生成了新的公钥/私钥对,并将公钥用以下命令打包到自签名证书中(参见证书链):

keytool -genkey -alias duke -keypass dukekeypasswd
这指定了一个初始口令“dukekeypasswd”,后续命令都需使用该口令才能访问与别名 duke 关联的私钥。如果后来想更改 duke 的私钥口令,可用类似下述的命令:
keytool -keypasswd -alias duke -keypass dukekeypasswd -new newpass
这将把口令从“dukekeypasswd”改为“newpass”。
请注意:实际上,除非是作为测试目的或是在安全的系统上,否则不应在命令行或脚本中指定口令。如果没有在命令行上指定所要求的口令选项,您将会得到要求输入口令的提示。当在口令提示符下键入口令时,口令将被即时显示出来(键入什么就显示什么),因此,要小心,不要当着任何人的面键入口令。

密钥仓库位置
每个 keytool 命令都有一个 -keystore 选项,用于指定 keytool 管理的密钥仓库的持久密钥仓库文件名称及其位置。缺省情况下,密钥仓库储存在用户宿主目录(由系统属性的“user.home”决定)中名为 .keystore 的文件中。假如用户名为 uName,则“user.home”属性的缺省值为
C:\Winnt\Profiles\uName,在多用户 Windows NT 系统上
C:\Windows\Profiles\uName,在多用户 Windows 95 系统上
C:\Windows,在单用户 Windows 95 系统上
因此,如果用户名为“cathy”,则“user.home”的缺省值为
C:\Winnt\Profiles\cathy,在多用户 Windows NT 系统上
C:\Windows\Profiles\cathy,在多用户 Windows 95 系统上
密钥仓库的创建
当用 -genkey, -import 或 -identitydb 命令向某个尚不存在的密钥仓库添加数据时,即创建密钥仓库。
更具体地说,如果在 -keystore 选项中指定了一个并不存在的密钥仓库,即加以创建。

如果不指定 -keystore 选项,则缺省密钥仓库将是宿主目录中名为 .keystore 的文件。如果该文件不存在,即加以创建。

你可能感兴趣的:(数据结构,C++,c,windows,C#)