keytool 学习与实战

 

先来说一下加解密算法的分类。基本上可以分为三类,它们分别是对称性解密算法、非对称性加密算法和消息摘要算法。每一类算法中又有多个不同的具体算法。对于这些算法,我们不要求完全掌握,但是对于各类算法的特点和用途是一定要了解的,对于一些常见的名字,如 DES、AES、RSA、DSA、MD5、SHA1 等,一定要熟悉,至少要知道它们分别属于哪类算法。

 

  对称性加密算法使用同一个密钥对信息进行加密和解密,其信息的安全性一部分取决于加密算法和密钥的长度,另一部分取决于密钥在传递过程中是否会被截获或盗取。非对称性加密算法使用两个密钥分别对信息进行加密和解密,这两个密钥称为私钥/公钥对。使用私钥加密的信息必须使用公钥解密,反之亦然。公钥可以公开发布,私钥由加密方保存,绝对不公开,将私钥被截获或窃取的可能性降到最低,因此非对称性加密算法的安全性比对称性加密算法的安全性更高。既然非对称性加密算法比对称性加密算法安全性更高,那对称性加密算法有什么存在的必要呢?这是因为对称性加密算法的运算速度更快。现实中,往往将对称性加密算法和非对称性加密算法结合使用,对于要传输的大块数据使用对称性加密算法加密,然后对加密使用的密钥使用非对称性加密算法进行加密,这样既可以获得更高的安全性,又可以获得更高的加解密运算速度。常用的对称性加密算法有DES算法、AES算法、3DES算法、TDEA算法、Blowfish算法、RC5算法、IDEA算法。常用的非对称性加密算法有DSA算法、RSA算法、Elgamal算法、背包算法、Rabin算法、D-H算法、ECC算法(椭圆曲线加密算法)。

 

  消息摘要算法的主要目的是对数据生成摘要。消息摘要算法不需要密钥,只有输入相同的数据才能得到相同的摘要,而且不可能从摘要反过来推算出数据。常用的消息摘要算法有MD5算法和SHA-1算法及其大量的变体。它们可以用来保证数据的完整性,在网络上发布文件时,常同时提供该文件的MD5值就是利用的消息摘要算法的这个特点,一旦该文件被篡改或者在网络传输中出现数据错误,再对其进行摘要运算就得不到相同的MD5值。

 

  对数据进行签名是我们在网络中最常见的安全操作。签名有双重作用,作用一就是保证数据的完整性,证明数据并非伪造,而且在传输的过程中没有被篡改,作用二就是防止数据的发布者否认其发布了该数据。签名同时使用了非对称性加密算法和消息摘要算法,对一块数据签名时,会先对这块数据进行消息摘要运算生成一个摘要,然后对该摘要使用发布者的私钥进行加密。接收者接受这块数据后,先使用发布者的公钥进行解密得到原数据的摘要,再对接收到的数据计算摘要,如果两个摘要相同,则说明数据没有被篡改。同时,因为发布者的私钥是不公开的,只要接收者通过发布者的公钥能成功对数据进行解密,就说明该数据一定来源于该发布者,他再怎么抵赖也没有用。

 

  那么问题来了,怎么确定某公钥一定是属于某发布者的呢?这就需要证书了。证书由权威认证机构颁发,其内容包含证书所有者的标识和它的公钥,并由权威认证机构使用它的私钥进行签名。信息的发布者通过在网络上发布证书来公开它的公钥,该证书由权威认证机构进行签名,认证机构也是通过发布它的证书来公开该机构的公钥,认证机构的证书由更权威的认证机构进行签名,这样就形成了证书链。证书链最顶端的证书称为根证书,根证书就只有自签名了。总之,要对网络上传播的内容进行签名和认证,就一定会用到证书。关于证书遵循的标准,最流行的是 X.509。

 

 

1、生成属于自己的私钥/公钥对,这可以通过 keytool -genkeypairs -alias xxx 命令得到。创建密钥对的时候, keytool 会在 keystore 中生成一个新的条目, -alias xxx 选项就是对该条目进行命名。生成密钥对之后,私钥是以原始数据直接储存在 keystore 中的,而公钥是要发布出去的,所以它被封装在一个 X.509 格式的自签名证书中。换句话说,创建密钥对的时候,同时就创建了一个自签名的证书。

    将自己假想为一个认证机构,或者说一个只对我自己签发证书的私有认证机构,我称之为 MyCA,先为 MyCA 生成一个自签名的根证书,使用的命令是 keytool -genkeypair -alias MyCA。

 

D:\JAVA_test>keytool -genkeypair -alias MyCA
输入密钥库口令:
再次输入新口令:
您的名字与姓氏是什么?
  [Unknown]:  Han
您的组织单位名称是什么?
  [Unknown]:  Huawei
您的组织名称是什么?
  [Unknown]:  Huawei Enterprise
您所在的城市或区域名称是什么?
  [Unknown]:  Xi'an
您所在的省/市/自治区名称是什么?
  [Unknown]:  Shaanxi
该单位的双字母国家/地区代码是什么?
  [Unknown]:  CN
CN=Han, OU=Huawei, O=Huawei Enterprise, L=Xi'an, ST=Shaanxi, C=CN是否正确?
  [否]:  y

输入 <MyCA> 的密钥口令
        (如果和密钥库口令相同, 按回车):
View Code

 

2、查看密钥库,证书的所有者和发布者相同,说明是一个自签名证书。

D:\JAVA_test>keytool -list -v
输入密钥库口令:

密钥库类型: JKS
密钥库提供方: SUN

您的密钥库包含 1 个条目

别名: myca
创建日期: 2016-8-8
条目类型: PrivateKeyEntry
证书链长度: 1
证书[1]:
所有者: CN=Han, OU=Huawei, O=Huawei Enterprise, L=Xi'an, ST=Shaanxi, C=CN
发布者: CN=Han, OU=Huawei, O=Huawei Enterprise, L=Xi'an, ST=Shaanxi, C=CN
序列号: 6ff1a447
有效期开始日期: Mon Aug 08 21:18:24 CST 2016, 截止日期: Sun Nov 06 21:18:24 CST 2016
证书指纹:
         MD5: A3:AA:89:E6:45:89:5C:3E:04:C2:9F:DF:8B:8A:56:49
         SHA1: 3C:D3:CD:21:2A:F2:EB:59:4B:9F:C7:8B:67:4F:C0:37:7D:F1:B0:BF
         SHA256: C5:04:B1:A5:5B:30:7C:50:D6:A2:77:71:83:D3:76:B6:55:EE:39:EA:3F:90:A9:ED:5C:DB:0F:0E:1D:2B:F5:79
         签名算法名称: SHA1withDSA
         版本: 3

扩展:

#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: CD 36 07 46 9E C8 52 AF   70 6D 65 62 F9 98 7A 14  .6.F..R.pmeb..z.
0010: 67 3F C5 D7                                        g?..
]
]



*******************************************
*******************************************
View Code

3、然后,再为我自己生成一个密钥对,使用命令 keytool -genkeypair -alias samsara命令,按提示完成操作后,keystore 中就又多了一个samsara条目。

D:\JAVA_test>keytool -genkeypair -alias samsara
输入密钥库口令:
您的名字与姓氏是什么?
  [Unknown]:  samsara
您的组织单位名称是什么?
  [Unknown]:  HH
您的组织名称是什么?
  [Unknown]:  HH wife
您所在的城市或区域名称是什么?
  [Unknown]:  Xi'an
您所在的省/市/自治区名称是什么?
  [Unknown]:  Shaanxi
该单位的双字母国家/地区代码是什么?
  [Unknown]:  CN
CN=samsara, OU=HH, O=HH wife, L=Xi'an, ST=Shaanxi, C=CN是否正确?
  [否]:  y

输入 <samsara> 的密钥口令
        (如果和密钥库口令相同, 按回车):
View Code

4、查看密钥库,有了两个自签名证书。

D:\JAVA_test>keytool -list -v
输入密钥库口令:

密钥库类型: JKS
密钥库提供方: SUN

您的密钥库包含 2 个条目

别名: myca
创建日期: 2016-8-8
条目类型: PrivateKeyEntry
证书链长度: 1
证书[1]:
所有者: CN=Han, OU=Huawei, O=Huawei Enterprise, L=Xi'an, ST=Shaanxi, C=CN
发布者: CN=Han, OU=Huawei, O=Huawei Enterprise, L=Xi'an, ST=Shaanxi, C=CN
序列号: 6ff1a447
有效期开始日期: Mon Aug 08 21:18:24 CST 2016, 截止日期: Sun Nov 06 21:18:24 CST 2016
证书指纹:
         MD5: A3:AA:89:E6:45:89:5C:3E:04:C2:9F:DF:8B:8A:56:49
         SHA1: 3C:D3:CD:21:2A:F2:EB:59:4B:9F:C7:8B:67:4F:C0:37:7D:F1:B0:BF
         SHA256: C5:04:B1:A5:5B:30:7C:50:D6:A2:77:71:83:D3:76:B6:55:EE:39:EA:3F:90:A9:ED:5C:DB:0F:0E:1D:2B:F5:79
         签名算法名称: SHA1withDSA
         版本: 3

扩展:

#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: CD 36 07 46 9E C8 52 AF   70 6D 65 62 F9 98 7A 14  .6.F..R.pmeb..z.
0010: 67 3F C5 D7                                        g?..
]
]



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


别名: samsara
创建日期: 2016-8-8
条目类型: PrivateKeyEntry
证书链长度: 1
证书[1]:
所有者: CN=samsara, OU=HH, O=HH wife, L=Xi'an, ST=Shaanxi, C=CN
发布者: CN=samsara, OU=HH, O=HH wife, L=Xi'an, ST=Shaanxi, C=CN
序列号: 4628176c
有效期开始日期: Mon Aug 08 21:50:29 CST 2016, 截止日期: Sun Nov 06 21:50:29 CST 2016
证书指纹:
         MD5: 89:F8:74:7C:6B:1E:68:7E:DA:D5:EA:8E:E0:06:13:58
         SHA1: 3B:EE:5D:7B:26:D6:B5:41:40:38:A3:BB:8D:28:4F:08:13:8E:1D:19
         SHA256: E3:E2:C4:F8:C6:6C:13:46:CF:66:A9:C9:73:8E:1E:95:D5:E6:B1:07:E2:3F:56:A7:C8:4F:76:9E:04:7D:79:E3
         签名算法名称: SHA1withDSA
         版本: 3

扩展:

#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: 69 4F C7 6A 2B 77 93 D1   F5 BD 97 D7 86 AA 3A 19  iO.j+w........:.
0010: 37 7D CA 56                                        7..V
]
]



*******************************************
*******************************************
View Code

5、自签名的证书可以使用,但是总不如认证机构颁发的证书权威。怎么样让 CA 为我们颁发证书呢?首先我们要向 CA 提交申请,提交申请的时候需要提交一份称为 certificate request 的数据。我们可以通过 keytool -certreq 命令针对 keystore 中相应的条目生成该数据。在这里,我想让 CA 给 samsara颁发证书,则使用 keytool -certreq -alias samsara 来生成 certificate request,生成的 certificate request 数据是 Base64 编码的。然后,将该申请提交给 CA。当然,现实中的 CA 那都是要收费的,而且还不便宜。那么我只好自己提交给自己了,使用私有的 MyCA 来给 samsara颁发证书。文件 samsara.cer 就是由 MyCA 颁发的证书。

D:\JAVA_test>keytool -certreq -alias samsara
输入密钥库口令:
-----BEGIN NEW CERTIFICATE REQUEST-----
MIIClTCCAlMCAQAwYDELMAkGA1UEBhMCQ04xEDAOBgNVBAgTB1NoYWFueGkxDjAM
BgNVBAcTBVhpJ2FuMRAwDgYDVQQKEwdISCB3aWZlMQswCQYDVQQLEwJISDEQMA4G
A1UEAxMHc2Ftc2FyYTCCAbgwggEsBgcqhkjOOAQBMIIBHwKBgQD9f1OBHXUSKVLf
Spwu7OTn9hG3UjzvRADDHj+AtlEmaUVdQCJR+1k9jVj6v8X1ujD2y5tVbNeBO4Ad
NG/yZmC3a5lQpaSfn+gEexAiwk+7qdf+t8Yb+DtX58aophUPBPuD9tPFHsMCNVQT
WhaRMvZ1864rYdcq7/IiAxmd0UgBxwIVAJdgUI8VIwvMspK5gqLrhAvwWBz1AoGB
APfhoIXWmz3ey7yrXDa4V7l5lK+7+jrqgvlXTAs9B4JnUVlXjrrUWU/mcQcQgYC0
SRZxI+hMKBYTt88JMozIpuE8FnqLVHyNKOCjrh4rs6Z1kW6jfwv6ITVi8ftiegEk
O8yk8b6oUZCJqIPf4VrlnwaSi2ZegHtVJWQBTDv+z0kqA4GFAAKBgQCFf3rMaT0A
dXgk9Bvw+stZc/nTkWQ1tYTS2jQWFeA+zU4yq9nF1gxmdJhux71gptUtjroPcb0N
PVcQVkld2Vs4i5gitV/fDW+fiC7VGgd9xuRXDJOA/824RnJAvVt0FrRncwVpAx0Z
4nWTuuXpam+CQHudAvknzURIq14z4qJJY6AwMC4GCSqGSIb3DQEJDjEhMB8wHQYD
VR0OBBYEFGlPx2ord5PR9b2X14aqOhk3fcpWMAsGByqGSM44BAMFAAMvADAsAhRX
YlqkUs4sXNOIeUIKesk2AyOiSwIUTRF5ponMvH6QZUrfZfbJH/DYGyU=
-----END NEW CERTIFICATE REQUEST-----
View Code

将其保存在samsara.txt文件中,使用-gencert命令生成证书:

D:\JAVA_test>keytool -gencert -alias MyCA -infile samsara.txt -outfile samsara.cer
输入密钥库口令:
View Code

查看证书,看其中的发布者和所有者:

D:\JAVA_test>keytool -printcert -v -file samsara.cer
所有者: CN=samsara, OU=HH, O=HH wife, L=Xi'an, ST=Shaanxi, C=CN
发布者: CN=Han, OU=Huawei, O=Huawei Enterprise, L=Xi'an, ST=Shaanxi, C=CN
序列号: 14bb7796
有效期开始日期: Mon Aug 08 22:06:56 CST 2016, 截止日期: Sun Nov 06 22:06:56 CST 2016
证书指纹:
         MD5: C5:EC:62:D2:CF:D9:87:E5:29:65:B3:69:27:D6:A3:52
         SHA1: 3F:30:39:6F:8C:D4:2B:BD:D0:A2:73:18:43:09:E1:D4:7C:88:A5:13
         SHA256: 61:C3:6B:22:87:DF:86:C7:01:6D:B1:04:88:6D:27:9C:C6:94:00:2C:B4:A2:D6:96:B9:60:D8:A4:6C:DB:EA:4F
         签名算法名称: SHA1withDSA
         版本: 3

扩展:

#1: ObjectId: 2.5.29.35 Criticality=false
AuthorityKeyIdentifier [
KeyIdentifier [
0000: CD 36 07 46 9E C8 52 AF   70 6D 65 62 F9 98 7A 14  .6.F..R.pmeb..z.
0010: 67 3F C5 D7                                        g?..
]
]

#2: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: 69 4F C7 6A 2B 77 93 D1   F5 BD 97 D7 86 AA 3A 19  iO.j+w........:.
0010: 37 7D CA 56                                        7..V
]
]
View Code

总的来说,先给申请者生成certificate request,再由CA认证机构接受申请生成证书。

6、申请者收到 CA 颁发的证书后,可以使用将证书导入到 keystore 中,然后可以看到证书链。

D:\JAVA_test>keytool -importcert -alias samsara -file samsara.cer
输入密钥库口令:
证书回复已安装在密钥库中
View Code
D:\JAVA_test>keytool -list -v
输入密钥库口令:

密钥库类型: JKS
密钥库提供方: SUN

您的密钥库包含 2 个条目

别名: myca
创建日期: 2016-8-8
条目类型: PrivateKeyEntry
证书链长度: 1
证书[1]:
所有者: CN=Han, OU=Huawei, O=Huawei Enterprise, L=Xi'an, ST=Shaanxi, C=CN
发布者: CN=Han, OU=Huawei, O=Huawei Enterprise, L=Xi'an, ST=Shaanxi, C=CN
序列号: 6ff1a447
有效期开始日期: Mon Aug 08 21:18:24 CST 2016, 截止日期: Sun Nov 06 21:18:24 CST 2016
证书指纹:
         MD5: A3:AA:89:E6:45:89:5C:3E:04:C2:9F:DF:8B:8A:56:49
         SHA1: 3C:D3:CD:21:2A:F2:EB:59:4B:9F:C7:8B:67:4F:C0:37:7D:F1:B0:BF
         SHA256: C5:04:B1:A5:5B:30:7C:50:D6:A2:77:71:83:D3:76:B6:55:EE:39:EA:3F:90:A9:ED:5C:DB:0F:0E:1D:2B:F5:79
         签名算法名称: SHA1withDSA
         版本: 3

扩展:

#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: CD 36 07 46 9E C8 52 AF   70 6D 65 62 F9 98 7A 14  .6.F..R.pmeb..z.
0010: 67 3F C5 D7                                        g?..
]
]



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


别名: samsara
创建日期: 2016-8-8
条目类型: PrivateKeyEntry
证书链长度: 2
证书[1]:
所有者: CN=samsara, OU=HH, O=HH wife, L=Xi'an, ST=Shaanxi, C=CN
发布者: CN=Han, OU=Huawei, O=Huawei Enterprise, L=Xi'an, ST=Shaanxi, C=CN
序列号: 14bb7796
有效期开始日期: Mon Aug 08 22:06:56 CST 2016, 截止日期: Sun Nov 06 22:06:56 CST 2016
证书指纹:
         MD5: C5:EC:62:D2:CF:D9:87:E5:29:65:B3:69:27:D6:A3:52
         SHA1: 3F:30:39:6F:8C:D4:2B:BD:D0:A2:73:18:43:09:E1:D4:7C:88:A5:13
         SHA256: 61:C3:6B:22:87:DF:86:C7:01:6D:B1:04:88:6D:27:9C:C6:94:00:2C:B4:A2:D6:96:B9:60:D8:A4:6C:DB:EA:4F
         签名算法名称: SHA1withDSA
         版本: 3

扩展:

#1: ObjectId: 2.5.29.35 Criticality=false
AuthorityKeyIdentifier [
KeyIdentifier [
0000: CD 36 07 46 9E C8 52 AF   70 6D 65 62 F9 98 7A 14  .6.F..R.pmeb..z.
0010: 67 3F C5 D7                                        g?..
]
]

#2: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: 69 4F C7 6A 2B 77 93 D1   F5 BD 97 D7 86 AA 3A 19  iO.j+w........:.
0010: 37 7D CA 56                                        7..V
]
]

证书[2]:
所有者: CN=Han, OU=Huawei, O=Huawei Enterprise, L=Xi'an, ST=Shaanxi, C=CN
发布者: CN=Han, OU=Huawei, O=Huawei Enterprise, L=Xi'an, ST=Shaanxi, C=CN
序列号: 6ff1a447
有效期开始日期: Mon Aug 08 21:18:24 CST 2016, 截止日期: Sun Nov 06 21:18:24 CST 2016
证书指纹:
         MD5: A3:AA:89:E6:45:89:5C:3E:04:C2:9F:DF:8B:8A:56:49
         SHA1: 3C:D3:CD:21:2A:F2:EB:59:4B:9F:C7:8B:67:4F:C0:37:7D:F1:B0:BF
         SHA256: C5:04:B1:A5:5B:30:7C:50:D6:A2:77:71:83:D3:76:B6:55:EE:39:EA:3F:90:A9:ED:5C:DB:0F:0E:1D:2B:F5:79
         签名算法名称: SHA1withDSA
         版本: 3

扩展:

#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: CD 36 07 46 9E C8 52 AF   70 6D 65 62 F9 98 7A 14  .6.F..R.pmeb..z.
0010: 67 3F C5 D7                                        g?..
]
]



*******************************************
*******************************************
View Code

 

【关键】keytool -genkeypair 不仅仅是生成密钥对,它会同时对公钥进行包装生成自签名的证书, keytool -gencert 并不是凭空生成证书,而是对 certificate request 进行回复

【扩展】

1、创建一个别名为han的证书条目,该条目存放在名为han.keystore的密钥库中,若han.keystore密钥库不存在则创建。 

D:\JAVA_test>keytool -genkeypair -alias "han" -keyalg "RSA" -keystore "han.keystore"
输入密钥库口令:
再次输入新口令:
您的名字与姓氏是什么?
  [Unknown]:  han
您的组织单位名称是什么?
  [Unknown]:  haohuan
您的组织名称是什么?
  [Unknown]:  haohuan wife
您所在的城市或区域名称是什么?
  [Unknown]:  xian
您所在的省/市/自治区名称是什么?
  [Unknown]:  shaanxi
该单位的双字母国家/地区代码是什么?
  [Unknown]:  CN
CN=han, OU=haohuan, O=haohuan wife, L=xian, ST=shaanxi, C=CN是否正确?
  [否]:  y

输入 <han> 的密钥口令
        (如果和密钥库口令相同, 按回车):
View Code

参数说明:

-genkeypair:生成一对非对称密钥;

-alias:指定密钥对的别名,该别名是公开的;
-keyalg:指定加密算法,本例中的采用通用的RAS加密算法;

-keystore:密钥库的路径及名称,不指定的话,默认在操作系统的用户目录下生成一个".keystore"的文件

注意:

a.“名字与姓氏”应该是域名,若输成了姓名,和真正运行的时候域名不符,会出问题;

b.再次输入密码,第一次输入的是密钥库(keystore)的密码,第二次输入的是证书条目的密码

 

2、查看证书库的证书条目

D:\JAVA_test>keytool -list -keystore han.keystore -v
输入密钥库口令:

密钥库类型: JKS
密钥库提供方: SUN

您的密钥库包含 1 个条目

别名: han
创建日期: 2016-8-8
条目类型: PrivateKeyEntry
证书链长度: 1
证书[1]:
所有者: CN=han, OU=haohuan, O=haohuan wife, L=xian, ST=shaanxi, C=CN
发布者: CN=han, OU=haohuan, O=haohuan wife, L=xian, ST=shaanxi, C=CN
序列号: 19fbf008
有效期开始日期: Mon Aug 08 23:03:22 CST 2016, 截止日期: Sun Nov 06 23:03:22 CST 2016
证书指纹:
         MD5: DC:2F:45:E3:5B:64:63:35:52:10:71:F0:F1:3F:E3:52
         SHA1: 39:8D:0B:D5:0A:BD:7C:4A:AB:62:8B:97:8E:3E:57:04:D6:9B:70:50
         SHA256: 1F:50:45:06:56:FC:E0:CA:9E:B2:2E:0D:D0:A8:39:EC:56:40:FB:A7:A2:F7:F1:F2:B4:3A:B0:01:50:C6:3B:2F
         签名算法名称: SHA256withRSA
         版本: 3

扩展:

#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: FA 5C 21 C9 49 47 DD BF   01 84 7B 80 49 EE D9 9E  .\!.IG......I...
0010: 83 E3 DA 3B                                        ...;
]
]



*******************************************
*******************************************
View Code

3、导出到证书文件

D:\JAVA_test>keytool -export -alias han -file han.crt -keystore han.keystore
输入密钥库口令:
存储在文件 <han.crt> 中的证书

D:\JAVA_test>keytool -export -alias han -file han.cer -keystore han.keystore
输入密钥库口令:
存储在文件 <han.cer> 中的证书

D:\JAVA_test>keytool -export -alias han -file han.jks -keystore han.keystore
输入密钥库口令:
存储在文件 <han.jks> 中的证书

D:\JAVA_test>keytool -printcert -file han.crt
所有者: CN=han, OU=haohuan, O=haohuan wife, L=xian, ST=shaanxi, C=CN
发布者: CN=han, OU=haohuan, O=haohuan wife, L=xian, ST=shaanxi, C=CN
序列号: 19fbf008
有效期开始日期: Mon Aug 08 23:03:22 CST 2016, 截止日期: Sun Nov 06 23:03:22 CST 2016
证书指纹:
         MD5: DC:2F:45:E3:5B:64:63:35:52:10:71:F0:F1:3F:E3:52
         SHA1: 39:8D:0B:D5:0A:BD:7C:4A:AB:62:8B:97:8E:3E:57:04:D6:9B:70:50
         SHA256: 1F:50:45:06:56:FC:E0:CA:9E:B2:2E:0D:D0:A8:39:EC:56:40:FB:A7:A2:F7:F1:F2:B4:3A:B0:01:50:C6:3B:2F
         签名算法名称: SHA256withRSA
         版本: 3

扩展:

#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: FA 5C 21 C9 49 47 DD BF   01 84 7B 80 49 EE D9 9E  .\!.IG......I...
0010: 83 E3 DA 3B                                        ...;
]
]


D:\JAVA_test>keytool -printcert -file han.cer
所有者: CN=han, OU=haohuan, O=haohuan wife, L=xian, ST=shaanxi, C=CN
发布者: CN=han, OU=haohuan, O=haohuan wife, L=xian, ST=shaanxi, C=CN
序列号: 19fbf008
有效期开始日期: Mon Aug 08 23:03:22 CST 2016, 截止日期: Sun Nov 06 23:03:22 CST 2016
证书指纹:
         MD5: DC:2F:45:E3:5B:64:63:35:52:10:71:F0:F1:3F:E3:52
         SHA1: 39:8D:0B:D5:0A:BD:7C:4A:AB:62:8B:97:8E:3E:57:04:D6:9B:70:50
         SHA256: 1F:50:45:06:56:FC:E0:CA:9E:B2:2E:0D:D0:A8:39:EC:56:40:FB:A7:A2:F7:F1:F2:B4:3A:B0:01:50:C6:3B:2F
         签名算法名称: SHA256withRSA
         版本: 3

扩展:

#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: FA 5C 21 C9 49 47 DD BF   01 84 7B 80 49 EE D9 9E  .\!.IG......I...
0010: 83 E3 DA 3B                                        ...;
]
]


D:\JAVA_test>keytool -printcert -file han.jks
所有者: CN=han, OU=haohuan, O=haohuan wife, L=xian, ST=shaanxi, C=CN
发布者: CN=han, OU=haohuan, O=haohuan wife, L=xian, ST=shaanxi, C=CN
序列号: 19fbf008
有效期开始日期: Mon Aug 08 23:03:22 CST 2016, 截止日期: Sun Nov 06 23:03:22 CST 2016
证书指纹:
         MD5: DC:2F:45:E3:5B:64:63:35:52:10:71:F0:F1:3F:E3:52
         SHA1: 39:8D:0B:D5:0A:BD:7C:4A:AB:62:8B:97:8E:3E:57:04:D6:9B:70:50
         SHA256: 1F:50:45:06:56:FC:E0:CA:9E:B2:2E:0D:D0:A8:39:EC:56:40:FB:A7:A2:F7:F1:F2:B4:3A:B0:01:50:C6:3B:2F
         签名算法名称: SHA256withRSA
         版本: 3

扩展:

#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: FA 5C 21 C9 49 47 DD BF   01 84 7B 80 49 EE D9 9E  .\!.IG......I...
0010: 83 E3 DA 3B                                        ...;
]
]

 

可以看出,通过这个命令可以将keystore中的某个条目export为不同格式的证书文件,但其内容是相同的。

 

posted on 2016-08-08 21:38  hans学习的地方  阅读(556)  评论(0)    收藏  举报

导航