Java keytool是密钥和证书管理工具。它使用户能够管理自己的公钥/私钥对及相关证书,用于(通过数字签名)自我认证(用户向别的用户/服务认证自己)或数据完整性以及认证服务。它还允许用户储存他们的通信对等者的公钥(以证书形式)。
本篇主要介绍
- 查看keytool的参数说明
- 如何用命令行生成Android jks签名文件
- 获取jks信息
查看keytool的参数说明
在Terminal输入以下命令,可查看keytool所有命令选项
keytool -genkey --help
ctloveqy@CtLoveQydeMacBook-Pro Pack % 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 <密码> <文件保存路径(可有可无)>
这里来一个流程示范,仅供参考,正式发布签名不建议这样写。
ctloveqy@CtLoveQydeMacBook-Pro Pack % keytool -genkeypair -alias mytest -keyalg RSA -keypass mypass -keystore mytest.jks -storepass mypass
下面是一个完成的创建流程
ctloveqy@CtLoveQydeMacBook-Pro Pack % 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控制台输出如下
ctloveqy@CtLoveQydeMacBook-Pro Pack % 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