用keytool创建秘钥库以及导入导出数字证书等操作

时间:2024-05-22 18:17:43

转自  http://blog.****.net/pucao_cug/article/details/70136159

1生成秘钥库并创建一个条目

2往已经存在的秘钥库中添加条目

3查看秘钥库中的信息

4导出数字证书文件

5将数字证书导入到自己的JRE证书库中

6从JRE的证书库中删除某个数字证书

7其他说明

 

1、生成秘钥库并创建一个条目

        秘钥需要存储在秘钥库中,秘钥库可以理解为一个存储了一个或多个秘钥的文件。一个秘钥库可以存储多个**对,每个秘钥对你都需要给他们取一个名字。

        因为不存储任何条目的秘钥库是没有意义的,所以我们在生成秘钥库的时候需要指定一个条目,如果不指定,默认是的条目名称是mykey

        我们在D:\keystore目录下生成一个文件名为cjTomcat.keystore的秘钥库,因为这个文件是第一次生成,必须同时生成一个条目,我决定将该秘钥库存储的第一个秘钥对的条目取名为testcj。命令是:

[plain] view plain copy
  1. keytool  -genkey  -keystore  "D:\keystore\hellocj.keystore"   -alias  testcj   -keyalg   RSA   -validity  365  

如图:

用keytool创建秘钥库以及导入导出数字证书等操作

命令敲完回车之后,需要我们依次输入一串信息,分别是秘钥库的密码、名字和姓氏等,

如图:

用keytool创建秘钥库以及导入导出数字证书等操作

      上图中红框中的都是手动敲入的内容。名字和姓氏这里一般是填写一个域名,我这里填写的是 localhost,我的秘钥库口令使用的是hellocj

在上图中敲入y回车之后

如图:

用keytool创建秘钥库以及导入导出数字证书等操作

      如果你想让名为testcj的这个条目的秘钥口令和秘钥库的口令一样,直接回车即可,我这里让此条目的秘钥口令为testcj,所以我输入testcj

如图:

   用keytool创建秘钥库以及导入导出数字证书等操作

好了我们的秘钥库创建好了,秘钥库中也添加了一个名为testcj的条目,秘钥库的密码是hellocj,testcj这个条目对应的秘钥口令是testcj

     说明:如果觉得一步一步的输入很不科学的话,可以使用下面的命令完成上述全部操作:

[plain] view plain copy
  1. 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  

如图:

 用keytool创建秘钥库以及导入导出数字证书等操作

2、往已经存在的秘钥库中添加条目

         在第1章节讲的是创建一个秘钥库文件,并添加一个初始化条目,那么如果秘钥库文件已经存在,我们想往里面添加条目怎么办。例如我想往里面添加名为cjTomcat的条目,给该条目设置的口令是helloworld 那么我的命令是:

[plain] view plain copy
  1. 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"  

   如图:

 用keytool创建秘钥库以及导入导出数字证书等操作

3、查看秘钥库中的信息

  好了我现在有一个秘钥库了,我知道该秘钥库的口令,我想看看该秘钥库里存了啥,命令是:

[plain] view plain copy
  1. keytool   -list  -v  -keystore  D:\keystore\hellocj.keystore   -storepass   "hellocj"   

如图:

用keytool创建秘钥库以及导入导出数字证书等操作


  回车后,可以看到cmd屏幕输出了如下信息:

 用keytool创建秘钥库以及导入导出数字证书等操作


用keytool创建秘钥库以及导入导出数字证书等操作

4、导出某个条目的数字证书文件

        好了,秘钥库也有了,条目也有了,我想将条目名为cjTomcat的相关信息以及公钥导出到一个数字证书文件中,数字证书文件名称我取名为cjTomcat.cer,命令如下:

[plain] view plain copy
  1. keytool   -alias  "cjTomcat"   -exportcert   -keystore    D:\keystore\hellocj.keystore    -file  D:\keystore\cjTomcat.cer   -storepass   "hellocj"  

导出成功

如图:

 用keytool创建秘钥库以及导入导出数字证书等操作

 

可以双击打开cjTomcat.cer文件,看看

如图:

 用keytool创建秘钥库以及导入导出数字证书等操作

5、将数字证书导入到自己的JRE证书库中

数字证书中存储的一般是某个服务器的域名和公钥,服务器证书需要导入到客户端的JRE中,我将刚才生成的cjTomcat.cer这个证书视为服务器相关的信息。现在我要将条目名为cjTomcat的数字证书导入到我本地的JRE受信任的证书库中,导入命令是:

[plain] view plain copy
  1. keytool    -import     -alias    "cjTomcat"    -keystore   C:\Java\jdk1.8.0_40\jre\lib\security\cacerts   -file   D:\keystore\cjTomcat.cer    -trustcacerts    -storepass    changeit  

      说明:changeitcacerts这个证书库的默认口令,因为我们需要操作cacerts这个证书库文件,所以需要输入该证书库的密码,C:\Java\jdk1.8.0_40\jre需要替换为你自己的JRE目录

回车之后,会询问是否信任cjTomcat.cer中存储的证书

如图:

用keytool创建秘钥库以及导入导出数字证书等操作

    输入y回车

如图:

用keytool创建秘钥库以及导入导出数字证书等操作

6、从JRE的证书库中删除某个数字证书

       条目名为cjTomcat的这个数字证书我不想再信任他,我要从我本地的JRE证书库中删除他,命令是:

[plain] view plain copy
  1. keytool   -delete     -alias      "cjTomcat"      -keystore           "C:\Java\jdk1.8.0_40\jre\lib\security\cacerts"       -storepass   changeit  

      说明:changeitcacerts这个证书库的默认口令,因为我们需要操作cacerts这个证书库文件,所以需要输入该证书库的密码,C:\Java\jdk1.8.0_40\jre需要替换为你自己的JRE目录

 

如图:

 用keytool创建秘钥库以及导入导出数字证书等操作

7、其他说明

           上面命令中的参数不一一解释,很多都很直观,简单说明一下-alias指定条目名称,-keyalg   "RSA"指定加密算法用RSA,-keystor指定秘钥库文件,如果目录有空格,那么请使用双引号。-validity 365指定有效期是365天。秘钥库的后缀名可以用任意名称,或者干脆不要后缀名也是可以的。