02月21日,2022

java开发项目中利用jdk工具keytool生成应用签名

在日常java开发项目中利用jdk工具keytool生成应用签名,最近在使用uniapp及做安卓app开发的时候都是需要生成应用签名,用于推送等场景使用。之前是用但是没仔细整理知识,想等有空整理之。

  1. 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"的文件,如下图所示:


四、查看秘银库里面的证书


本文链接:https://www.liaonian.com.cn/info_16.html

-- EOF --