原文链接: 使用 keytool 生成密钥对 + keytool 命令详解
一、生成密钥对
G:>keytool -genkeypair ^
More? -alias own-alias ^
More? -keyalg RSA ^
More? -keypass password ^
More? -sigalg SHA256withRSA ^
More? -dname "cn=zolmk,ou=zolmk,o=zolmk,l=HN,st=HN,c=CN" ^
More? -validity 3650 ^
More? -keystore keystore.jks ^
More? -storetype JKS ^
More? -storepass password
复制代码
参数详解:
-genkeypair
:原-genkey
,Java 1.6 之后更改,表示生成密钥对-alias
:产生别名,每个 keystore 都会关联这一个独一无二的 alias,alias 不区分大小写-keyalg
:指定产生密钥的算法-keypass
:指定别名条目的密码(私钥的密码)-sigalg
:签名算法名称-dname
:唯一判别名,cn 所有者名称,ou 组织单位名称,o 组织名称,l 城市或区域名称,st 州或省份名称,c 两字母国家代码-validity
:有效天数-keystore
:密钥库名称-storetype
:密钥库类型-storepass
:密钥库口令
二、查看密钥库
keytool -list -v -keystore keystore.jks -storepass "password"
复制代码
-list
:列出密钥库中的条目-v
:详细输出-keystore
:密钥库文件
三、keytool 全部命令
-certreq 生成证书请求
-changealias 更改条目的别名
-delete 删除条目
-exportcert 导出证书
-genkeypair 生成密钥对
-genseckey 生成密钥
-gencert 根据证书请求生成证书
-importcert 导入证书或证书链
-importpass 导入口令
-importkeystore 从其他密钥库导入一个或所有条目
-keypasswd 更改条目的密钥口令
-list 列出密钥库中的条目
-printcert 打印证书内容
-printcertreq 打印证书请求的内容
-printcrl 打印 CRL 文件的内容
-storepasswd 更改密钥库的存储口令
复制代码
1)二级命令参数
-list
列出密钥库中的条目
-rfc 以 RFC 样式输出
-alias <alias> 要处理的条目的别名
-keystore <keystore> 密钥库名称
-storepass <arg> 密钥库口令
-storetype <storetype> 密钥库类型
-providername <providername> 提供方名称
-providerclass <providerclass> 提供方类名
-providerarg <arg> 提供方参数
-providerpath <pathlist> 提供方类路径
-v 详细输出
-protected 通过受保护的机制的口令
复制代码
-genkeypair
生成密钥对
-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 通过受保护的机制的口令
复制代码
-genseckey
生成密钥
-alias <alias> 要处理的条目的别名
-keypass <arg> 密钥口令
-keyalg <keyalg> 密钥算法名称
-keysize <keysize> 密钥位大小
-keystore <keystore> 密钥库名称
-storepass <arg> 密钥库口令
-storetype <storetype> 密钥库类型
-providername <providername> 提供方名称
-providerclass <providerclass> 提供方类名
-providerarg <arg> 提供方参数
-providerpath <pathlist> 提供方类路径
-v 详细输出
-protected 通过受保护的机制的口令
复制代码
-certreq
生成证书请求
-alias <alias> 要处理的条目的别名
-sigalg <sigalg> 签名算法名称
-file <filename> 输出文件名
-keypass <arg> 密钥口令
-keystore <keystore> 密钥库名称
-dname <dname> 唯一判别名
-storepass <arg> 密钥库口令
-storetype <storetype> 密钥库类型
-providername <providername> 提供方名称
-providerclass <providerclass> 提供方类名
-providerarg <arg> 提供方参数
-providerpath <pathlist> 提供方类路径
-v 详细输出
-protected 通过受保护的机制的口令
复制代码
-changealias
更改条目的别名
-alias <alias> 要处理的条目的别名
-destalias <destalias> 目标别名
-keypass <arg> 密钥口令
-keystore <keystore> 密钥库名称
-storepass <arg> 密钥库口令
-storetype <storetype> 密钥库类型
-providername <providername> 提供方名称
-providerclass <providerclass> 提供方类名
-providerarg <arg> 提供方参数
-providerpath <pathlist> 提供方类路径
-v 详细输出
-protected 通过受保护的机制的口令
复制代码
-delete
删除条目
-alias <alias> 要处理的条目的别名
-keystore <keystore> 密钥库名称
-storepass <arg> 密钥库口令
-storetype <storetype> 密钥库类型
-providername <providername> 提供方名称
-providerclass <providerclass> 提供方类名
-providerarg <arg> 提供方参数
-providerpath <pathlist> 提供方类路径
-v 详细输出
-protected 通过受保护的机制的口令
复制代码
-exportcert
导出证书
-rfc 以 RFC 样式输出
-alias <alias> 要处理的条目的别名
-file <filename> 输出文件名
-keystore <keystore> 密钥库名称
-storepass <arg> 密钥库口令
-storetype <storetype> 密钥库类型
-providername <providername> 提供方名称
-providerclass <providerclass> 提供方类名
-providerarg <arg> 提供方参数
-providerpath <pathlist> 提供方类路径
-v 详细输出
-protected 通过受保护的机制的口令
复制代码
-gencert
根据证书请求生成证书
-rfc 以 RFC 样式输出
-infile <filename> 输入文件名
-outfile <filename> 输出文件名
-alias <alias> 要处理的条目的别名
-sigalg <sigalg> 签名算法名称
-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 通过受保护的机制的口令
复制代码
-importcert
导入证书或证书链
-noprompt 不提示
-trustcacerts 信任来自 cacerts 的证书
-protected 通过受保护的机制的口令
-alias <alias> 要处理的条目的别名
-file <filename> 输入文件名
-keypass <arg> 密钥口令
-keystore <keystore> 密钥库名称
-storepass <arg> 密钥库口令
-storetype <storetype> 密钥库类型
-providername <providername> 提供方名称
-providerclass <providerclass> 提供方类名
-providerarg <arg> 提供方参数
-providerpath <pathlist> 提供方类路径
-v 详细输出
复制代码
-importpass
导入口令
-alias <alias> 要处理的条目的别名
-keypass <arg> 密钥口令
-keyalg <keyalg> 密钥算法名称
-keysize <keysize> 密钥位大小
-keystore <keystore> 密钥库名称
-storepass <arg> 密钥库口令
-storetype <storetype> 密钥库类型
-providername <providername> 提供方名称
-providerclass <providerclass> 提供方类名
-providerarg <arg> 提供方参数
-providerpath <pathlist> 提供方类路径
-v 详细输出
-protected 通过受保护的机制的口令
复制代码
-importkeystore
从其他密钥库导入一个或所有条目
-srckeystore <srckeystore> 源密钥库名称
-destkeystore <destkeystore> 目标密钥库名称
-srcstoretype <srcstoretype> 源密钥库类型
-deststoretype <deststoretype> 目标密钥库类型
-srcstorepass <arg> 源密钥库口令
-deststorepass <arg> 目标密钥库口令
-srcprotected 受保护的源密钥库口令
-srcprovidername <srcprovidername> 源密钥库提供方名称
-destprovidername <destprovidername> 目标密钥库提供方名称
-srcalias <srcalias> 源别名
-destalias <destalias> 目标别名
-srckeypass <arg> 源密钥口令
-destkeypass <arg> 目标密钥口令
-noprompt 不提示
-providerclass <providerclass> 提供方类名
-providerarg <arg> 提供方参数
-providerpath <pathlist> 提供方类路径
-v 详细输出
复制代码
-keypasswd
更改条目的密钥口令
-alias <alias> 要处理的条目的别名
-keypass <arg> 密钥口令
-new <arg> 新口令
-keystore <keystore> 密钥库名称
-storepass <arg> 密钥库口令
-storetype <storetype> 密钥库类型
-providername <providername> 提供方名称
-providerclass <providerclass> 提供方类名
-providerarg <arg> 提供方参数
-providerpath <pathlist> 提供方类路径
-v 详细输出
复制代码
-printcert
打印证书内容
-rfc 以 RFC 样式输出
-file <filename> 输入文件名
-sslserver <server[:port]> SSL 服务器主机和端口
-jarfile <filename> 已签名的 jar 文件
-v 详细输出
复制代码
-printcertreq
打印证书请求的内容
-file <filename> 输入文件名
-v 详细输出
复制代码
-printcrl
打印 CRL 文件的内容
-file <filename> 输入文件名
-v 详细输出
复制代码
-storepasswd
更改密钥库的储存口令
-new <arg> 新口令
-keystore <keystore> 密钥库名称
-storepass <arg> 密钥库口令
-storetype <storetype> 密钥库类型
-providername <providername> 提供方名称
-providerclass <providerclass> 提供方类名
-providerarg <arg> 提供方参数
-providerpath <pathlist> 提供方类路径
-v 详细输出
复制代码
四、简单的使用
pk8 +
x509.pem生成keytool
需要准备的文件,pk8,x509.pem,还需要安装openssl
- 第一步:先安装openssl
- 第二步:使用openssl生成pem
- 第三步:使用openssl与生成的pem生成keystore,密码为android,生成的keystore文件名为output.keystore
- 第四步:使用keytool修改存储密码为android
openssl pkcs8 -inform DER -nocrypt -in platform.pk8 -out out.pem
timeout /T 3
openssl pkcs12 -export -in platform.x509.pem -inkey out.pem -out platform.p12 -password pass:keyPassword -name keyAlias
timeout /T 3
keytool -importkeystore -deststorepass password -destkeystore output.keystore -srckeystore platform.p12 -srcstoretype PKCS12 -srcstorepass keyPassword
timeout /T 3
keytool -v -keystore output.keystore -storepasswd -storepass password -new storePassword
timeout /T 3
复制代码
在android的签名中就可以这样使用了
release {
storeFile file("output.keystore")
storePassword "storePassword"
keyAlias "keyAlias"
keyPassword "keyPassword"
}
复制代码
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END