Java中Keytool工具的使用总结(二)

在上一篇博文中我们讲解了keytool工具的一些参数的具体含义,本博文将带领大家来学习怎样使用keytool工具生成keystore文件和导出证书、以及对证书的操作。

在上一篇博文中我们讲解了keytool工具的一些参数的具体含义,本博文将带领大家来学习怎样使用keytool工具生成keystore文件和导出证书、以及对证书的操作。

1、keystore文件的生成

(一)分阶段生成

输入下面这些数据到windows的dos窗口中,然后回车,将会提示你输入生成所需的信息;然后按照提示操作即可,如下:

keytool -genkey
    -alias yushan(别名)
    -keypass yushan(别名密码)
    -keyalg RSA(算法)
    -keysize 1024(密钥长度)
    -validity 365(有效期,天单位)
    -keystore e:yushan.keystore(指定生成证书的位置和证书名称)
    -storepass 123456(获取keystore信息的密码);

回车输入相关信息即可;主要输入的信息如下:

您的名字与姓氏是什么?
  [Unknown]:  test
您的组织单位名称是什么?
  [Unknown]:  bug315
您的组织名称是什么?
  [Unknown]:  bug315
您所在的城市或区域名称是什么?
  [Unknown]:  chengdu
您所在的州或省份名称是什么?
  [Unknown]:  sichuansheng
该单位的两字母国家代码是什么
  [Unknown]:  china
CN=test, OU=bug315, O=bug315, L=chengdu, ST=sichuansheng, C=china 正确吗?
  [否]:y

(二)一次性生成

指将keystore生成所需要的所有信息都写在命令中,然后回车,keystore就生成好了。-dname选项主要包括如下字段:

CN=(名字与姓氏), OU=(组织单位名称), O=(组织名称), L=(城市或区域名称), ST=(州或省份名称), C=(单位的两字母国家代码)

【实例】在E盘下面生成一个test.keystore的文件,如下:

C:Usersadministrator>keytool -genkey
 -alias testAlias
 -keypass aaaaaa
 -keysize 1024
 -validity 365
 -keystore e:	est.keystore
 -storepass 123456
-dname "CN=Test, OU=, O=, L=ChengDu, ST=,C="

回车将会在E盘生成一个test.keystore文件,注意:-dName并不是所有选项都必须填写。

2、keystore信息的查看

顾名思义,查看信息就是查看指定keystore文件包含的信息。如下:查看keystore中的详细信息

C:Usersadministrator>keytool -list -v -keystore E:	est.keystore -storepass 123456

显示内容:

Keystore 类型: JKS
Keystore 提供者: SUN

您的 keystore 包含 1 输入

别名名称: huangxin
创建日期: 2015-11-12
项类型: PrivateKeyEntry
认证链长度: 1
认证 [1]:
所有者:CN=huang, OU=basjans, O=basjans, L=chengdu, ST=sichuansheng, C=china
签发人:CN=huang, OU=basjans, O=basjans, L=chengdu, ST=sichuansheng, C=china
序列号:5643f2db
有效期: Thu Nov 12 10:00:59 CST 2015 至Fri Nov 11 10:00:59 CST 2016
证书指纹:
         MD5:58:2B:BC:7C:DB:C9:62:E9:3E:64:F5:28:A3:6B:3D:72
         SHA1:82:4E:E5:72:23:93:0F:0C:E4:F8:3B:D5:33:27:85:9A:50:6C:84:C5
         签名算法名称:SHA1withDSA
         版本: 3


*******************************************
*******************************************

缺省情况下,-list 命令打印证书的 MD5 指纹。而如果指定了 -v 选项,将以可读格式打印证书,如果指定了 -rfc 选项,将以可打印的编码格式输出证书。

实例:使用-list 和 -rfc显示keystore的详细信息

keytool -list  -rfc -keystore e:	est.keystore -storepass 123456

显示内容:

-------------------------------------------------------------------------------------------------------
Keystore 类型: JKS
Keystore 提供者: SUN
您的 keystore 包含 1 输入
别名名称: yushan
创建日期: 2009-7-29
项类型: PrivateKeyEntry
认证链长度: 1
认证 [1]:
-----BEGIN CERTIFICATE-----
MIICSzCCAbSgAwIBAgIESm8p7TANBgkqhkiG9w0BAQUFADBqMQ8wDQYDVQQGDAbkuK3lm70xDzAN
BgNVBAgMBua5luWNlzEPMA0GA1UEBwwG5rmY5r2tMREwDwYDVQQKDAh4eOWNj+S8mjERMA8GA1UE
CwwIeHjlhazlj7gxDzANBgNVBAMTBnl1c2hhbjAeFw0wOTA3MjgxNjQwMTNaFw0xMDA3MjgxNjQw
MTNaMGoxDzANBgNVBAYMBuS4reWbvTEPMA0GA1UECAwG5rmW5Y2XMQ8wDQYDVQQHDAbmuZjmva0x
ETAPBgNVBAoMCHh45Y2P5LyaMREwDwYDVQQLDAh4eOWFrOWPuDEPMA0GA1UEAxMGeXVzaGFuMIGf
MA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCJoru1RQczRzTnBWxefVNspQBykS220rS8Y/oX3mZa
hjL4wLfOURzUuxxuVQR2jx7QI+XKME+DHQj9r6aAcLBCi/T1jwF8mVYxtpRuTzE/6KEZdhowEe70
liWLVE+hytLBHZ03Zhwcd6q5HUMu27du3MPQvqiwzTY7MrwIvQQ8iQIDAQABMA0GCSqGSIb3DQEB
BQUAA4GBAGoQQ1/FnTfkpQh+Ni6h3fZdn3sR8ZzDMbOAIYVLAhBb85XDJ8QZTarHbZMJcIdHxAl1
i08ct3E8U87V9t8GZFWVC4BFg/+zeFEv76SFpVE56iX7P1jpsu78z0m69hHlds77VJTdyfMSvtXv
sYHP3fxfzx9WyhipBwd8VPK/NgEP
-----END CERTIFICATE-----
-------------------------------------------------------------------------------------------------------


3、证书的导出

keytool -export

    -alias yushan

    -keystore e:yushan.keystore

    -file e:yushan.crt(指定导出的证书位置及证书名称)

    -storepass 123456


4、查看导出的证书信息 

keytool -printcert -file yushan.crt

显示:(在windows下可以双击yushan.crt查看)

-----------------------------------------------------------------------
所有者:CN=yushan, OU=xx公司, O=xx协会, L=湘潭, ST=湖南, C=中国
签发人:CN=yushan, OU=xx公司, O=xx协会, L=湘潭, ST=湖南, C=中国
序列号:4a6f29ed
有效期: Wed Jul 29 00:40:13 CST 2009 至Thu Jul 29 00:40:13 CST 2010
证书指纹:
         MD5:A3:D7:D9:74:C3:50:7D:10:C9:C2:47:B0:33:90:45:C3
         SHA1:2B:FC:9E:3A:DF:C6:C4:FB:87:B8:A0:C6:99:43:E9:4C:4A:E1:18:E8
         签名算法名称:SHA1withRSA
         版本: 3
-----------------------------------------------------------------------

5、证书的导入:

(1)准备一个将要被导入的证书,输入下面命令执行,将会在e:shuany.keystore生成一个keystore文件,如下:

keytool -genkey
    -alias shuany
    -keypass shuany
    -keyalg RSA
    -keysize 1024
    -validity 365
    -keystore  e:shuany.keystore
    -storepass 123456 -dname "CN=shuany,OU=xx, O=xx, L=xx, ST=xx, C=xx";


(2)执行下面命令导出一个证书,证书位于e:shuany.crt目录,如下:

keytool -export 
    -alias shuany 
    -keystore e:shuany.keystore 
    -file e:shuany.crt 
    -storepass 123456


(3)现在将shuany.crt 证书加入到yushan.keystore中了,如下:

keytool -import 
    -alias shuany 
    -file e:shuany.crt 
    -keystore e:yushan.keystore 
    -storepass 123456

注意:其中的-alias指定导入证书的别名,如果不指定默认为mykey,别名唯一,否则导入出错。


(4)使用-list -v命令选项查看已经被导入的证书,如下:

keytool -list  -v 
    -keystore e:keytool yushan.keystore 
    -storepass 123456

显示:

------------------------------------------------------------------------------
Keystore 类型: JKS
Keystore 提供者: SUN
您的 keystore 包含 2 输入
别名名称: yushan
创建日期: 2009-7-29
项类型: PrivateKeyEntry
认证链长度: 1
认证 [1]:
所有者:CN=yushan, OU=xx公司, O=xx协会, L=湘潭, ST=湖南, C=中国
签发人:CN=yushan, OU=xx公司, O=xx协会, L=湘潭, ST=湖南, C=中国
序列号:4a6f29ed
有效期: Wed Jul 29 00:40:13 CST 2009 至Thu Jul 29 00:40:13 CST 2010
证书指纹:
         MD5:A3:D7:D9:74:C3:50:7D:10:C9:C2:47:B0:33:90:45:C3
         SHA1:2B:FC:9E:3A:DF:C6:C4:FB:87:B8:A0:C6:99:43:E9:4C:4A:E1:18:E8
         签名算法名称:SHA1withRSA
         版本: 3
*******************************************
*******************************************
别名名称: shuany
创建日期: 2009-7-29
输入类型: trustedCertEntry
所有者:CN=shuany, OU=xx, O=xx, L=xx, ST=xx, C=xx
签发人:CN=shuany, OU=xx, O=xx, L=xx, ST=xx, C=xx
序列号:4a6f2cd9
有效期: Wed Jul 29 00:52:41 CST 2009 至Thu Jul 29 00:52:41 CST 2010
证书指纹:
         MD5:15:03:57:9B:14:BD:C5:50:21:15:47:1E:29:87:A4:E6
         SHA1:C1:4F:8B:CD:5E:C2:94:77:B7:42:29:35:5C:BB:BB:2E:9E:F0:89:F5
         签名算法名称:SHA1withRSA
         版本: 3
*******************************************
*******************************************
------------------------------------------------------------------------------


6、证书条目的删除

keytool -delete 
    -alias shuany
    -keystore yushan.keystore 
    -storepass 123456

注意:其中-alias表示指示被删除的别名。

7、证书条目口令的修改: 

keytool -keypasswd 
    -alias yushan
    -keypass yushan
    -new 123456
    -keystore e:yushan.keystore 
    -storepass 123456

注意:

-new 表示指示别名的新密码

-keypass 旧密码

8、keystore口令的修改

keytool -storepasswd 
-keystore e:yushan.keystore 
-storepass 123456
-new yushan

注意:

-new 表示指示别名的新密码

-storepass 旧密码

9、修改keystore中别名为yushan的信息

keytool -selfcert 
-alias yushan 
-keypass yushan 
-keystore e:yushan.keystore 
-storepass 123456 
-dname "cn=yushan,ou=yushan,o=yushan,c=us"


锲而舍之,朽木不折;锲而不舍,金石可镂。——《荀子·劝学》
0 不喜欢
说说我的看法 -
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
其他应用
公众号