今天接触到了Java签名相关的东西,想要学习一下,很多东西介绍的不全面,前因后果也介绍的不是很清楚。找了很多地方终于了解了大概,整理在这里。考虑到很多查看的人的需求点不同,也没有必要把所有的东西放在一遍文章中,导致文章很长。这篇文章就只介绍Java签名.keystore文件的生成方法,和相关的操作。
生成方法
在终端输入:
keytool -genkey -alias javadebugkey(别名) -keypass java123(别名密) -keyalg RSA(生成签名算法) -keysize 1024(密钥长度) -validity 365(有效期,天单位) -keystore javadebugkey.keystore(生成的keystore文件)
括号中是前面字符串含义的说明,这些信息在有的时候是要用的。别名,别名密码等。在终端输入之后,自定义自己的.keystore信息之后把括号内容去掉。之后回车,先会让你输入密码,例如123456,之后会提示让你输入相关信息,输入即可,中国是CN。
对.keystore文件的操作
查看
查看一个keystore文件的内部信息:
keytool -list -v -keystore javadebugkey.keystore -storepass 123456
就可以看到相关信息。
密钥库类型: JKS
密钥库提供方: SUN您的密钥库包含 1 个条目
别名: javadebugkey
创建日期: 2016-7-6
条目类型: PrivateKeyEntry
证书链长度: 1
证书[1]:
所有者: CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown
发布者: CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown
序列号: 48eff7e5
有效期开始日期: Wed Jul 06 21:58:54 CST 2016, 截止日期: Thu Jul 06 21:58:54 CST 2017
证书指纹:
MD5: E7:8B:2F:27:05:3B:35:63:49:FD:79:8A:B5:2A:C6:AE
SHA1: F7:47:F2:71:72:9A:88:43:60:74:AA:2B:65:69:15:03:37:CB:CB:31
SHA256: 77:F6:5B:29:22:85:49:CB:44:1B:A4:4E:BD:3F:B4:2B:D6:B3:05:E1:46:B5:56:7E:F0:AD:C8:08:CA:AB:CE:DE
签名算法名称: SHA256withRSA
版本: 3扩展:
#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: A7 11 32 79 F3 16 DD 7B C5 DE 22 8C FC 70 47 BC ..2y......"..pG.
0010: 4B 00 E0 A8 K...
]
]
导出证书
终端输入:
keytool -export -alias javadebugkey -keystore javadebugkey.keystore -file javadebugkey.crt(指定导出的证书) -storepass 123456
即可得到该签名的证书
查看证书
终端输入:
keytool -printcert -file javadebugkey.crt
得到结果:
所有者: CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown
发布者: CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown
序列号: 48eff7e5
有效期开始日期: Wed Jul 06 21:58:54 CST 2016, 截止日期: Thu Jul 06 21:58:54 CST 2017
证书指纹:
MD5: E7:8B:2F:27:05:3B:35:63:49:FD:79:8A:B5:2A:C6:AE
SHA1: F7:47:F2:71:72:9A:88:43:60:74:AA:2B:65:69:15:03:37:CB:CB:31
SHA256: 77:F6:5B:29:22:85:49:CB:44:1B:A4:4E:BD:3F:B4:2B:D6:B3:05:E1:46:B5:56:7E:F0:AD:C8:08:CA:AB:CE:DE
签名算法名称: SHA256withRSA
版本: 3扩展:
#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: A7 11 32 79 F3 16 DD 7B C5 DE 22 8C FC 70 47 BC ..2y......"..pG.
0010: 4B 00 E0 A8 K...
]
]
删除信息
删除一个条目
keytool -delete -alias javadebugkey -keystore javadebugkey.keystore -storepass 123456
之后用上面的方法查看结果:
密钥库类型: JKS
密钥库提供方: SUN您的密钥库包含 0 个条目
导入证书
将我们刚才的证书导入:
keytool -import -alias java -keypass java123 -file javadebugkey.crt -keystore javadebugkey.keystore -storepass 123456
再次查看文件信息:
密钥库类型: JKS
密钥库提供方: SUN您的密钥库包含 1 个条目
别名: java
创建日期: 2016-7-6
条目类型: trustedCertEntry所有者: CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown
发布者: CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown
序列号: 48eff7e5
有效期开始日期: Wed Jul 06 21:58:54 CST 2016, 截止日期: Thu Jul 06 21:58:54 CST 2017
证书指纹:
MD5: E7:8B:2F:27:05:3B:35:63:49:FD:79:8A:B5:2A:C6:AE
SHA1: F7:47:F2:71:72:9A:88:43:60:74:AA:2B:65:69:15:03:37:CB:CB:31
SHA256: 77:F6:5B:29:22:85:49:CB:44:1B:A4:4E:BD:3F:B4:2B:D6:B3:05:E1:46:B5:56:7E:F0:AD:C8:08:CA:AB:CE:DE
签名算法名称: SHA256withRSA
版本: 3扩展:
#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: A7 11 32 79 F3 16 DD 7B C5 DE 22 8C FC 70 47 BC ..2y......"..pG.
0010: 4B 00 E0 A8 K...
]
]
更多操作
更多操作请看keytool的帮助