Keytool入门教程:命令详解
1、Keytool是什么?
keytool是个密钥和证书管理工具,使用户能够管理自己的公钥/私钥对及相关证书,用于认证服务。
2、Keytool安装
Keytool是一个Java自带的数据证书的管理工具,无需单独安装,只要电脑上安装有JDK或者JRE,就可以使用Keytool
与java.exe,javac.exe命令位于同一个位置,即JDK安装目录或者JRE的安装目录里面,例如:
D:\Program Files\Java\jdk1.8.0_181\bin
D:\Program Files\Java\jdk1.8.0_181\jre\bin
3、Keytool密钥存储形式
Keytool将密钥(key)和证书(certificates)存在一个称为keystore的文件中。也就是说,在keystore里只包含两种数据:
- 密钥实体:如果采用非对称加密形式,则包含私钥和配对公钥,否则只包括密钥。
- 可信任的证书实体:只包含公钥
4、Keytool的使用教程:
第一步:生成秘钥库并创建第一个条目
秘钥需要存储在秘钥库中,秘钥库可以理解为一个存储了一个或多个秘钥的文件。一个秘钥库可以存储多个密钥对,每个秘钥对都需要给它们取一个别名。
因为不存储任何条目的秘钥库是没有意义的,所以我们在生成秘钥库的时候需要指定一个条目,如果不指定,默认是的条目名称是mykey。
我们在 E:\keystore 目录下生成一个文件名为test.keystore的秘钥库,因为这个文件是第一次生成,必须同时生成一个条目,我决定将该秘钥库存储的第一个秘钥对的条目取名为mytest。命令是:
keytool -genkey -keystore "E:\keystore\test.keystore" -alias mytest -keyalg RSA -validity 365
参数说明:
-genkey: 表示生成密钥对(公钥和私钥)
-keystore:每个 keytool 命令都有一个 -keystore 选项,用于指定 keytool 管理的密钥仓库的永久密钥仓库文件名称及其位置。如果不指定 -keystore 选项,则缺省密钥仓库将是宿主目录中(由系统属性的"user.home"决定)名为 .keystore 的文件。如果该文件并不存在,则它将被创建。
-alias:指定密钥条目的别名,该别名是公开的。
-keyalg:指定密钥的算法,如:RSA、DSA(如果不指定默认采用DSA))
-validity:指定创建的证书有效期多少天
执行上述命令,如下所示:
C:\Users\mybatis>keytool -genkey -keystore "E:\keystore\test.keystore" -alias mytest -keyalg RSA -validity 365
输入密钥库口令:
再次输入新口令:
您的名字与姓氏是什么?
[Unknown]: www.mybatis.cn
您的组织单位名称是什么?
[Unknown]: www.mybatis.cn
您的组织名称是什么?
[Unknown]: www.mybatis.cn
您所在的城市或区域名称是什么?
[Unknown]: beijing
您所在的省/市/自治区名称是什么?
[Unknown]: beijing
该单位的双字母国家/地区代码是什么?
[Unknown]: cn
CN=www.mybatis.cn, OU=www.mybatis.cn, O=www.mybatis.cn, L=beijing, ST=beijing, C=cn是否正确?
[否]: y
输入 <mytest> 的密钥口令
(如果和密钥库口令相同, 按回车):
5、注意事项
1、如果指定的密钥库是第一次创建,则必须在创建时初始化一个条目。
2、密钥库的密码至少必须6个字符,可以是纯数字或者字母或者数字和字母的组合等。
3、"名字与姓氏"应该是输入域名,而不是我们的个人姓名,其他的可以不填。
执行完上述命令后,在操作系统的指定目录E:\keystore下生成了一个"test.keystore"的文件。
备注:需要设置密钥库口令和密钥口令,实现双保险的目的。