这篇博客以Mac系统为例,window系统类似。
首先打开终端,输入:
keytool -help
keytool -help
效果如下:
gefufengdeMacBook-Air:bin gefufeng$ keytool -help
密钥和证书管理工具
命令:
-certreq 生成证书请求
-changealias 更改条目的别名
-delete 删除条目
-exportcert 导出证书
-genkeypair 生成密钥对
-genseckey 生成密钥
-gencert 根据证书请求生成证书
-importcert 导入证书或证书链
-importpass 导入口令
-importkeystore 从其他密钥库导入一个或所有条目
-keypasswd 更改条目的密钥口令
-list 列出密钥库中的条目
-printcert 打印证书内容
-printcertreq 打印证书请求的内容
-printcrl 打印 CRL 文件的内容
-storepasswd 更改密钥库的存储口令
使用 "keytool -command_name -help" 获取 command_name 的用法
gefufengdeMacBook-Air:bin gefufeng$ keytool -help
密钥和证书管理工具
命令:
-certreq 生成证书请求
-changealias 更改条目的别名
-delete 删除条目
-exportcert 导出证书
-genkeypair 生成密钥对
-genseckey 生成密钥
-gencert 根据证书请求生成证书
-importcert 导入证书或证书链
-importpass 导入口令
-importkeystore 从其他密钥库导入一个或所有条目
-keypasswd 更改条目的密钥口令
-list 列出密钥库中的条目
-printcert 打印证书内容
-printcertreq 打印证书请求的内容
-printcrl 打印 CRL 文件的内容
-storepasswd 更改密钥库的存储口令
使用 "keytool -command_name -help" 获取 command_name 的用法
这是keytool的一些常用命令。
生成一个keystore
生成一个keystore的命名为:
keytool -genkey -alias alias_name -keyalg RSA -validity 20000 -keystore /Users/gefufeng/work/demo/android.key
keytool -genkey -alias alias_name -keyalg RSA -validity 20000 -keystore /Users/gefufeng/work/demo/android.key
-alias 后面跟的是别名这里是alias_name
-keyalg 是加密方式这里是RSA
-validity 是有效期这里是20000天
-keystore 就是要生成的keystore的名称这里是android.key
注意: -keystore 我这里写上了路径,如果不写的话,命令为:
keytool -genkey -alias android.keystore -keyalg RSA -validity 20000 -keystore android.key
keytool -genkey -alias android.keystore -keyalg RSA -validity 20000 -keystore android.key
这样生成的android.key文件就在/Library/Java/JavaVirtualMachines/jdk1.8.0_40.jdk/Contents/Home/bin目录下,但是在这个目录下我没有权限,所以写到最后报错:
keytool 错误: java.io.FileNotFoundException: Android.keystore (Permission denied)
keytool 错误: java.io.FileNotFoundException: Android.keystore (Permission denied)
故我加上了 /Users/gefufeng/work/demo/android.key
下面是具体步骤:
gefufengdeMacBook-Air:bin gefufeng$ keytool -genkey -alias android.key -keyalg RSA -validity 20000 -keystore /Users/gefufeng/work/demo/android.key
输入密钥库口令:
再次输入新口令:
您的名字与姓氏是什么?
[Unknown]: ge
您的组织单位名称是什么?
[Unknown]: ge
您的组织名称是什么?
[Unknown]: ge
您所在的城市或区域名称是什么?
[Unknown]: ge
您所在的省/市/自治区名称是什么?
[Unknown]: ge
该单位的双字母国家/地区代码是什么?
[Unknown]: CH
CN=ge, OU=ge, O=ge, L=ge, ST=ge, C=CH是否正确?
[否]: y
输入 <android.key> 的密钥口令
(如果和密钥库口令相同, 按回车):
gefufengdeMacBook-Air:bin gefufeng$ keytool -genkey -alias android.key -keyalg RSA -validity 20000 -keystore /Users/gefufeng/work/demo/android.key
输入密钥库口令:
再次输入新口令:
您的名字与姓氏是什么?
[Unknown]: ge
您的组织单位名称是什么?
[Unknown]: ge
您的组织名称是什么?
[Unknown]: ge
您所在的城市或区域名称是什么?
[Unknown]: ge
您所在的省/市/自治区名称是什么?
[Unknown]: ge
该单位的双字母国家/地区代码是什么?
[Unknown]: CH
CN=ge, OU=ge, O=ge, L=ge, ST=ge, C=CH是否正确?
[否]: y
输入 <android.key> 的密钥口令
(如果和密钥库口令相同, 按回车):
至此,我的keystore文件生成
查看ketstore文件的信息
这个关键是找到你的keystore文件的位置,例如:
keytool -list -v -ketsore /Users/gefufeng/work/demo/android.key
keytool -list -v -ketsore /Users/gefufeng/work/demo/android.key
效果如下:
gefufengdeMacBook-Air:bin gefufeng$ keytool -list -v -keystore /Users/gefufeng/work/demo/android.key -storepass gefufeng
密钥库类型: JKS
密钥库提供方: SUN
您的密钥库包含 1 个条目
别名: android.key
创建日期: 2016-5-6
条目类型: PrivateKeyEntry
证书链长度: 1
证书[1]:
所有者: CN=ge, OU=ge, O=ge, L=ge, ST=ge, C=CH
发布者: CN=ge, OU=ge, O=ge, L=ge, ST=ge, C=CH
序列号: 162d2412
有效期开始日期: Fri May 06 13:59:44 CST 2016, 截止日期: Sat Feb 07 13:59:44 CST 2071
证书指纹:
MD5: 49:CD:72:AA:3F:F3:42:9C:29:35:75:8B:00:94:74:7C
SHA1: 2F:A5:66:6D:C7:E0:B4:0D:4F:6D:39:BC:E1:4B:F4:70:5C:EB:DE:62
SHA256: BD:4A:BD:1B:AF:38:8A:43:B5:15:8A:17:08:BE:16:16:65:1A:62:6F:8E:B3:B3:22:0B:8B:92:86:EF:4F:A3:9E
签名算法名称: SHA256withRSA
版本: 3
扩展:
#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: 53 0C 42 69 5E 7C B4 D6 A1 3B CD FF DD 74 76 7C S.Bi^....;...tv.
0010: 82 42 2E D8 .B..
]
]
*******************************************
*******************************************
gefufengdeMacBook-Air:bin gefufeng$ keytool -list -v -keystore /Users/gefufeng/work/demo/android.key -storepass gefufeng
密钥库类型: JKS
密钥库提供方: SUN
您的密钥库包含 1 个条目
别名: android.key
创建日期: 2016-5-6
条目类型: PrivateKeyEntry
证书链长度: 1
证书[1]:
所有者: CN=ge, OU=ge, O=ge, L=ge, ST=ge, C=CH
发布者: CN=ge, OU=ge, O=ge, L=ge, ST=ge, C=CH
序列号: 162d2412
有效期开始日期: Fri May 06 13:59:44 CST 2016, 截止日期: Sat Feb 07 13:59:44 CST 2071
证书指纹:
MD5: 49:CD:72:AA:3F:F3:42:9C:29:35:75:8B:00:94:74:7C
SHA1: 2F:A5:66:6D:C7:E0:B4:0D:4F:6D:39:BC:E1:4B:F4:70:5C:EB:DE:62
SHA256: BD:4A:BD:1B:AF:38:8A:43:B5:15:8A:17:08:BE:16:16:65:1A:62:6F:8E:B3:B3:22:0B:8B:92:86:EF:4F:A3:9E
签名算法名称: SHA256withRSA
版本: 3
扩展:
#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: 53 0C 42 69 5E 7C B4 D6 A1 3B CD FF DD 74 76 7C S.Bi^....;...tv.
0010: 82 42 2E D8 .B..
]
]
*******************************************
*******************************************
所有信息一览无余