转自 http://blog.****.net/pucao_cug/article/details/70136159
1、生成秘钥库并创建一个条目
秘钥需要存储在秘钥库中,秘钥库可以理解为一个存储了一个或多个秘钥的文件。一个秘钥库可以存储多个**对,每个秘钥对你都需要给他们取一个名字。
因为不存储任何条目的秘钥库是没有意义的,所以我们在生成秘钥库的时候需要指定一个条目,如果不指定,默认是的条目名称是mykey
我们在D:\keystore目录下生成一个文件名为cjTomcat.keystore的秘钥库,因为这个文件是第一次生成,必须同时生成一个条目,我决定将该秘钥库存储的第一个秘钥对的条目取名为testcj。命令是:
- keytool -genkey -keystore "D:\keystore\hellocj.keystore" -alias testcj -keyalg RSA -validity 365
如图:
命令敲完回车之后,需要我们依次输入一串信息,分别是秘钥库的密码、名字和姓氏等,
如图:
上图中红框中的都是手动敲入的内容。名字和姓氏这里一般是填写一个域名,我这里填写的是 localhost,我的秘钥库口令使用的是hellocj
在上图中敲入y回车之后
如图:
如果你想让名为testcj的这个条目的秘钥口令和秘钥库的口令一样,直接回车即可,我这里让此条目的秘钥口令为testcj,所以我输入testcj
如图:
好了我们的秘钥库创建好了,秘钥库中也添加了一个名为testcj的条目,秘钥库的密码是hellocj,testcj这个条目对应的秘钥口令是testcj
说明:如果觉得一步一步的输入很不科学的话,可以使用下面的命令完成上述全部操作:
- keytool -genkey -keystore "D:\keystore\hellocj.keystore" -alias testcj -keyalg RSA -validity 365 -dname "CN=localhost, OU=org, O=org.cj, L=昆明, ST=云南, C=中国" -keypass testcj -storepass hellocj
如图:
2、往已经存在的秘钥库中添加条目
在第1章节讲的是创建一个秘钥库文件,并添加一个初始化条目,那么如果秘钥库文件已经存在,我们想往里面添加条目怎么办。例如我想往里面添加名为cjTomcat的条目,给该条目设置的口令是helloworld 那么我的命令是:
- keytool -genkey -keystore "D:\keystore\hellocj.keystore" -alias "cjTomcat" -keyalg "RSA" -validity 365 -dname "CN=127.0.0.1,OU=org, O=org.cj, L=昆明, ST=云南, C=中国" -keypass "helloworld" -storepass "hellocj"
如图:
3、查看秘钥库中的信息
好了我现在有一个秘钥库了,我知道该秘钥库的口令,我想看看该秘钥库里存了啥,命令是:
- keytool -list -v -keystore D:\keystore\hellocj.keystore -storepass "hellocj"
如图:
回车后,可以看到cmd屏幕输出了如下信息:
4、导出某个条目的数字证书文件
好了,秘钥库也有了,条目也有了,我想将条目名为cjTomcat的相关信息以及公钥导出到一个数字证书文件中,数字证书文件名称我取名为cjTomcat.cer,命令如下:
- keytool -alias "cjTomcat" -exportcert -keystore D:\keystore\hellocj.keystore -file D:\keystore\cjTomcat.cer -storepass "hellocj"
导出成功
如图:
可以双击打开cjTomcat.cer文件,看看
如图:
5、将数字证书导入到自己的JRE证书库中
数字证书中存储的一般是某个服务器的域名和公钥,服务器证书需要导入到客户端的JRE中,我将刚才生成的cjTomcat.cer这个证书视为服务器相关的信息。现在我要将条目名为cjTomcat的数字证书导入到我本地的JRE受信任的证书库中,导入命令是:
- keytool -import -alias "cjTomcat" -keystore C:\Java\jdk1.8.0_40\jre\lib\security\cacerts -file D:\keystore\cjTomcat.cer -trustcacerts -storepass changeit
说明:changeit是cacerts这个证书库的默认口令,因为我们需要操作cacerts这个证书库文件,所以需要输入该证书库的密码,C:\Java\jdk1.8.0_40\jre需要替换为你自己的JRE目录
回车之后,会询问是否信任cjTomcat.cer中存储的证书
如图:
输入y回车
如图:
6、从JRE的证书库中删除某个数字证书
条目名为cjTomcat的这个数字证书我不想再信任他,我要从我本地的JRE证书库中删除他,命令是:
- keytool -delete -alias "cjTomcat" -keystore "C:\Java\jdk1.8.0_40\jre\lib\security\cacerts" -storepass changeit
说明:changeit是cacerts这个证书库的默认口令,因为我们需要操作cacerts这个证书库文件,所以需要输入该证书库的密码,C:\Java\jdk1.8.0_40\jre需要替换为你自己的JRE目录
如图:
7、其他说明
上面命令中的参数不一一解释,很多都很直观,简单说明一下-alias指定条目名称,-keyalg "RSA"指定加密算法用RSA,-keystor指定秘钥库文件,如果目录有空格,那么请使用双引号。-validity 365指定有效期是365天。秘钥库的后缀名可以用任意名称,或者干脆不要后缀名也是可以的。