Java 8 签名失效

来源:互联网 发布:电脑盘加密软件 编辑:程序博客网 时间:2024/06/05 23:02

最近在盒子上安装应用失败,提示签名失效。查了资料之后,猜测可能是使用的 java 8。所以用命令进行手动签名。

首先:生成秘钥对.

-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 -genkey -v -keystore /Users/xxx/Downloads/xxx.keystore -alias rca -keyalg RSA -validity 20000keytool -genkey -v -keystore {秘钥库名称,默认是JDK的bin目录,也可以指定}.keystore -alias {别名}  -keyalg {算法名称} -validity {有效天数} 输入密钥库口令:  输入密码,不过不会显示您的名字与姓氏是什么?  [Unknown]:  qq您的组织单位名称是什么?  [Unknown]:  qq您的组织名称是什么?  [Unknown]:  qq您所在的城市或区域名称是什么?  [Unknown]:  qq您所在的省/市/自治区名称是什么?  [Unknown]:  qq该单位的双字母国家/地区代码是什么?  [Unknown]:  qqCN=qq, OU=qq, O=qq, L=qq, ST=qq, C=qq是否正确?  []:  yes您的名字与姓氏是什么?  [qq]:  qq您的组织单位名称是什么?  [qq]:  qq您的组织名称是什么?  [qq]:  qq您所在的城市或区域名称是什么?  [qq]:  qq您所在的省/市/自治区名称是什么?  [qq]:  qq该单位的双字母国家/地区代码是什么?  [qq]:  qqCN=qq, OU=qq, O=qq, L=qq, ST=qq, C=qq是否正确?  []:  y 

否 后面需要输入 y , yes 是错误的。

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore {xxx.keystore} -signedjar {xxx.apk(签名后的APK)}{ xxx.apk(未签名的)} {上面生成的keystore文件的别名}jarsigner [选项] jar-file 别名       jarsigner -verify [选项] jar-file [别名...][-keystore <url>]           密钥库位置[-storepass <口令>]         用于密钥库完整性的口令[-storetype <类型>]         密钥库类型[-keypass <口令>]           私有密钥的口令 (如果不同)[-certchain <文件>]         替代证书链文件的名称[-sigfile <文件>]           .SF/.DSA 文件的名称[-signedjar <文件>]         已签名的 JAR 文件的名称[-digestalg <算法>]        摘要算法的名称[-sigalg <算法>]           签名算法的名称[-verify]                   验证已签名的 JAR 文件[-verbose[:suboptions]]     签名/验证时输出详细信息。                            子选项可以是 all, grouped 或 summary[-certs]                    输出详细信息和验证时显示证书[-tsa <url>]                时间戳颁发机构的位置[-tsacert <别名>]           时间戳颁发机构的公共密钥证书[-tsapolicyid <oid>]        时间戳颁发机构的 TSAPolicyID[-tsadigestalg <算法>]      时间戳请求中的摘要数据的算法[-altsigner <>]           替代的签名机制的类名[-altsignerpath <路径列表>] 替代的签名机制的位置[-internalsf]               在签名块内包含 .SF 文件[-sectionsonly]             不计算整个清单的散列[-protected]                密钥库具有受保护验证路径[-providerName <名称>]      提供方名称[-providerClass <>        加密服务提供方的名称  [-providerArg <参数>]]... 主类文件和构造器参数[-strict]                   将警告视为错误

java 6:少了-sigalg 和 -digestalg 两个参数

jarsigner -verbose  -keystore {xxx.keystore} -signedjar {xxx.apk(签名后的APK)}{ xxx.apk(未签名的)} {上面生成的keystore文件的别名}