一. 什么是keytool
keytool是个密钥和证书管理工具。它使用户能够管理自己的公钥/私钥对及相关证书,用于(通过数字签名)自我认证或数据完整性以及认证服务。在JDK1.4以后的版本里都包含这个工具,它的位置在%JAVA_HOME%\bin\keytool.exe,如下图所示:

二. keytool的用法

三. 创建证书
创建证书主要是使用“-genkeypair”,该命令的可用参数如下:

例如:生成一个名称为key1的证书:
keytool -genkeypair -alias "key1" -keyalg "RSA" -keystore "key.keystore"
功能:
创建一个别名为key1的证书,将证书存放 在名为key.keystore的密钥库中,若key.keystore不存在则创建。
参数说明:
-genkeypair:生成一堆非对称密钥
-alias:指定密钥对的别名,该别名是公开的;
-keyalg:指定加密算法,本例中采用的是RAS加密算法
-keystore:密钥库的路径及名称,不指定的话,默认在操作系统的用户目录下生成一个“.keystore”的文件

注意:
1.密钥库的密码至少 是6个字符,可以是纯数字或者字母或者数字与字母的组合等待
2.“名字与姓氏”应该是输入域名,而不是我们的个人姓名,其他是非必填的
执行完上述命令后,在操作系统的用户目录下生成了一个“key.keystore”的文件

四. 查看密钥库里面的证书
例如:查看key.keystore这个密钥库里面的所有证书
cmd代码
keytool -list -keystore key.keystore

五. 导出到证书文件
例如:将名为key.keystore的证书库中别名为key1的证书条目导出到证书文件key.crt中
cmd代码:
keytool -export -alias key1 -file key.crt -keystore key.keystore

运行结果:在操作系统的用户目录下,产生了一个“key.crt”的文件

六.导入证书
例如:将名为key.crt的证书文件导入到key.cacerts的证书库中
Cmd代码:
keytool -import -keystore key_cacerts -file key.crt

七.查看证书信息
例如:查看证书key.crt的信息
Cmd代码:
keytool -printcert -file "key.crt"

八.删除密钥库中的条目
例如:删除密钥库key.keystore中别名为key1的证书条目
Cmd代码:
keytool -delete -keystore key.keystore -alias key1

九.修改证书条目的口令
例如:将密钥库key.keystore中别名为key2的证书条目的密码修改为123456
Cmd代码:
keytool -keypasswd -alias key2 -keystore key.keystore
