在日常java开发项目中利用jdk工具keytool生成应用签名,最近在使用uniapp及做安卓app开发的时候都是需要生成应用签名,用于推送等场景使用。之前是用但是没仔细整理知识,想等有空整理之。
-
keytool的概念
keytool 是证书和秘银管理工具。它能让用户能够自由管理自己的私钥/公钥对及其相关证书,用于(通过数字签名)自我认证(用户向别的用户/服务认证自己)或认证服务以及数据完整性。在JDK 1.4以后的版本中都包含了这一工具,它的位置为%JAVA_HOME%\bin\keytool.exe,如下我自己环境截图图所示:
二、keytool的用法
C:\Users\dpb169>keytool 密钥和证书管理工具 命令: -certreq 生成证书请求 -changealias 更改条目的别名 -delete 删除条目 -exportcert 导出证书 -genkeypair 生成密钥对 -genseckey 生成密钥 -gencert 根据证书请求生成证书 -importcert 导入证书或证书链 -importpass 导入口令 -importkeystore 从其他密钥库导入一个或所有条目 -keypasswd 更改条目的密钥口令 -list 列出密钥库中的条目 -printcert 打印证书内容 -printcertreq 打印证书请求的内容 -printcrl 打印 CRL 文件的内容 -storepasswd 更改密钥库的存储口令 使用 "keytool -command_name -help" 获取 command_name 的用法三、创建证书
创建证书根据2点我们知道,主要是使用" -genkeypair"实现,该命令的可用参数如下:
C:\Users\dpb169>keytool -genkeypair -help keytool -genkeypair [OPTION]... 生成密钥对 选项: -alias <alias> 要处理的条目的别名 -keyalg <keyalg> 密钥算法名称 -keysize <keysize> 密钥位大小 -sigalg <sigalg> 签名算法名称 -destalias <destalias> 目标别名 -dname <dname> 唯一判别名 -startdate <startdate> 证书有效期开始日期/时间 -ext <value> X.509 扩展 -validity <valDays> 有效天数 -keypass <arg> 密钥口令 -keystore <keystore> 密钥库名称 -storepass <arg> 密钥库口令 -storetype <storetype> 密钥库类型 -providername <providername> 提供方名称 -providerclass <providerclass> 提供方类名 -providerarg <arg> 提供方参数 -providerpath <pathlist> 提供方类路径 -v 详细输出 -protected 通过受保护的机制的口令 使用 "keytool -help" 获取所有可用命令示例,我们生成一个别名(iliaonian)的证书,保存名称为iliaonian
C:\Users\dpb169>keytool -genkeypair -alias "iliaonian" -keyalg "RSA" -keystore "iliaonian.keystore" 输入密钥库口令: 再次输入新口令: 您的名字与姓氏是什么? [Unknown]: liaonian.com.cn 您的组织单位名称是什么? [Unknown]: 您的组织名称是什么? [Unknown]: 您所在的城市或区域名称是什么? [Unknown]: 您所在的省/市/自治区名称是什么? [Unknown]: 该单位的双字母国家/地区代码是什么? [Unknown]: CN=liaonian.com.cn, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown是否正确? [否]: y 输入 <iliaonian> 的密钥口令 (如果和密钥库口令相同, 按回车): 再次输入新口令: Warning: JKS 密钥库使用专用格式。建议使用 "keytool -importkeystore -srckeystore iliaonian.keystore -destkeystore iliaonian.keystore -deststoretype pkcs12" 迁移到行业标准格式 PKCS12。
参数说明:
-genkeypair:生成一对非对称密钥;
-alias:指定密钥对的别名,该别名是公开的;
-keyalg:指定加密算法,本例中的采用通用的RAS加密算法;
-keystore:密钥库的路径及名称,不指定的话,默认在操作系统的用户目录下生成一个".keystore"的文件
注意:
1.密钥库的密码至少必须6个字符,可以是纯数字或者字母或者数字和字母的组合等等
执行完上述命令后,在操作系统的用户目录下生成了一个"iliaonian.keystore"的文件,如下图所示:
四、查看秘银库里面的证书