Java keytool是密钥和证书管理工具。它使用户能够管理自己的公钥/私钥对及相关证书,用于(通过数字签名)自我认证(用户向别的用户/服务认证自己)或数据完整性以及认证服务。它还允许用户储存他们的通信对等者的公钥(以证书形式)。
本篇主要介绍
- 查看keytool的参数说明
- 如何用命令行生成Android jks签名文件
- 获取jks信息
查看keytool的参数说明
在Terminal输入以下命令,可查看keytool所有命令选项
keytool -genkey --help
keytool -genkey --help
keytool -genkeypair [OPTION]...
生成密钥对
选项:
-alias <alias> 要处理的条目的别名
-keyalg <alg> 密钥算法名称
-keysize <size> 密钥位大小
-groupname <name> 组名。例如,椭圆曲线名称。
-sigalg <alg> 签名算法名称
-dname <name> 唯一判别名
-startdate <date> 证书有效期开始日期/时间
-ext <value> X.509 扩展
-validity <days> 有效天数
-keypass <arg> 密钥口令
-keystore <keystore> 密钥库名称
-storepass <arg> 密钥库口令
-storetype <type> 密钥库类型
-providername <name> 提供方名称
-addprovider <name> 按名称 (例如 SunPKCS11) 添加安全提供方
[-providerarg <arg>] 配置 -addprovider 的参数
-providerclass <class> 按全限定类名添加安全提供方
[-providerarg <arg>] 配置 -providerclass 的参数
-providerpath <list> 提供方类路径
-v 详细输出
-protected 通过受保护的机制的口令
使用 "keytool -?, -h, or --help" 可输出此帮助消息
使用keytool生成签名文件
命令行举例:
keytool -genkeypair -alias <别名> -keyalg RSA -keypass <密码> -keystore <签名文件名>.jks -storepass <密码> <文件保存路径(可有可无)>
这里来一个流程示范,仅供参考,正式发布签名不建议这样写。
keytool -genkeypair -alias mytest -keyalg RSA -keypass mypass -keystore mytest.jks -storepass mypass
下面是一个完成的创建流程
keytool -genkeypair -alias mytest -keyalg RSA -keypass mypass -keystore mytest.jks -storepass mypass
您的名字与姓氏是什么?
[Unknown]: WH
您的组织单位名称是什么?
[Unknown]: WH
您的组织名称是什么?
[Unknown]: WH
您所在的城市或区域名称是什么?
[Unknown]: WH
您所在的省/市/自治区名称是什么?
[Unknown]: HB
该单位的双字母国家/地区代码是什么?
[Unknown]: 86
CN=WH, OU=WH, O=WH, L=WH, ST=HB, C=86是否正确?
[否]: Y
正在为以下对象生成 2,048 位RSA密钥对和自签名证书 (SHA256withRSA) (有效期为 90 天):
CN=WH, OU=WH, O=WH, L=WH, ST=HB, C=86
获取jks信息
查看的命令:
keytool -list -keystore test.jks
Terminal控制台输出如下
keytool -list -keystore mytest.jks
输入密钥库口令:
密钥库类型: PKCS12
密钥库提供方: SUN
您的密钥库包含 1 个条目
mytest, 2022年8月1日, PrivateKeyEntry,
证书指纹 (SHA-256): 3B:85:2A:26:19:92:B9:A2:27:96:0C:43:75:6A:6D:11:46:05:36:27:D2:F4:FE:7E:04:04:49:4D:7E:FD:29:E3