jack-server启动失败提示Android签名jks转pkcs12

Ubuntu18.04下启动jack-server失败

提示:JKS 密钥库使用专用格式

在ubuntu18.04启动jack-server 时发现无法启动(openjdk version “1.8.0_362”)
1,./prebuilts/sdk/tools/jack-admin start-server。提示:Jack server installation not found
2,./jack-admin install-server jack-launcher.jar jack-server-4.11.ALPHA.jar
提示:Warning:
JKS 密钥库使用专用格式。建议使用 “keytool -importkeystore -srckeystore /home/justin/.jack-server/server.jks -destkeystore /home/justin/.jack-server/server.jks -deststoretype pkcs12” 迁移到行业标准格式 PKCS12。
在这里插入图片描述

网上最简单的方案
输入以下命令:
keytool -genkey -v -alias xxx -keyalg RSA -storetype PKCS12 -keystore E:\xxx -storepass yourStorePass -keypass yourAliasPass -validity 36500
按照提示输入信息:
在这里插入图片描述

最后再次测试一下:
./jack-admin install-server jack-launcher.jar jack-server-4.11.ALPHA.jar
Jack-server已启动,相关命令都可以正常使用
在这里插入图片描述

网上的详细方案
附录:
1,Android签名jks转pkcs12(JKS 密钥库使用专用格式。建议使用 “keytool -importkeystore xx pkcs12“ 迁移到行业标准格式 PKCS12)_keytool 错误: java.lang.exception: 目标 pkcs12 密钥库具有不同-CSDN博客
https://blog.csdn.net/xiaoerye/article/details/114284426

Android签名jks转pkcs12(JKS 密钥库使用专用格式。建议使用 “keytool -importkeystore xx pkcs12“ 迁移到行业标准格式 PKCS12)

有遇到如下error的朋友,可以阅读此文解决:
1、JKS 密钥库使用专用格式。建议使用 “keytool -importkeystore -srckeystore E:\eeee -destkeystore E:\eeee -deststoretype pkcs12” 迁移到行业标准格式 PKCS12。
2、目标 pkcs12 密钥库具有不同的 storepass 和 keypass。请在指定了 -destkeypass 时重试。
3、PKCS12 密钥库不支持其他存储和密钥口令。正在忽略用户指定的-destkeypass值。
先说一下背景,换新公司后项目需要重新创建签名文件,所以遇到了这个之前没有遇到过的问题,既然提示这个警告了(其实用jks类型的一样能打包签名),那我还是来解决一下(强迫症好难)。我很好奇为什么AS(包括用命令指定签名类型)不能直接给我们生成pkcs12类型的签名文件,目前猜测可能是keytool版本问题,这里不深究。讲一下我的解决思路:
1、是否能直接生成pkcs12类型的证书
2、怎么把jks证书转换成pkcs12的

首先说方案一,很简单,用命令生成证书的时候指定storetype为pkcs12:

keytool -genkey -v -alias xxx -keyalg RSA -storetype PKCS12 -keystore E:\xxx -storepass yourStorePass -keypass yourAliasPass -validity 36500

后续按照提示生成即可。(由于公司原因,不便截图,见谅,有遇到问题的话下方评论)
此时生成的证书确实是pkcs12,但alias的口令(密码)与密钥库的口令一样(至于为什么一样,可能还是keytool的版本问题,不深究),如果这样能满足你的需求,那就不用往下看了。但一般我们不希望别名和秘钥库的口令是一样的,所以接下来我们用命令修改刚才创建的别名口令即可:

keytool -keypasswd -alias xxx -keystore C:\xxxxx

到此问题解决。

方案二:使用AS或者普通命令创建证书后,会有如下的提示:
JKS 密钥库使用专用格式。建议使用 “keytool -importkeystore -srckeystore C:\xxx -destkeystore C:\xxx -deststoretype pkcs12” 迁移到行业标准格式 PKCS12

附普通创建命令:

keytool -genkey -alias test -keypass 654321 -keyalg RSA -keysize 2048 -validity 36500 -keystore C:\xxx -storepass 123456

接着运行其建议的命令:

keytool -importkeystore -srckeystore C:\xxx -destkeystore C:\xxx -deststoretype pkcs12

这行代码的意思是从之前创建的证书导入到新证书里,需要输入之前证书的相关口令 :
输入目标密钥库口令:即设置新证书的秘钥库密码
再次输入新口令:确认新密码
输入源密钥库口令:即之前创建的证书秘钥库密码
输入 的密钥口令:之前秘钥库别名密码
输入正确后,会这样提示:
keytool 错误: java.lang.Exception: 目标 pkcs12 密钥库具有不同的 storepass 和 keypass。请在指定了 -destkeypass 时重试。

好,我们继续按照他的要求添加目标别名pass:

keytool -importkeystore -srckeystore C:\xxx -destkeystore C:\xxx -deststoretype pkcs12 -destkeypass 654321

输入源秘钥库口令后,得到如下提示:
警告: PKCS12 密钥库不支持其他存储和密钥口令。正在忽略用户指定的-destkeypass值。
查看证书内容可知密钥库类型已经是 PKCS12:

keytool -list -v -keystore C:\xxx

也就是说这个keytool不让我们的库秘钥和别名秘钥不一致,先不管警告。这里有两种方案:
a、修改alias test的密码:

keytool -keypasswd -alias test -keystore C:\xxx

b、用上面转换后的证书继续创建一个名为test1的alias,这个alias也即我们需要的alias,之后再删除test别名(因为它的口令跟秘钥库的口令一样):

keytool -genkey -alias test1 -keypass 654321 -keyalg RSA -keysize 2048 -validity 36500 -keystore C:\xxx -storepass 123456

执行后,查看证书的别名,已经有两个了:

keytool -list -v -keystore C:\xxx

删除test别名:

keytool -keystore C:\xxx -delete -alias test

再查看内容,别名只剩我们需要的test1。
到此问题解决。

由此可见,方案一是正解,最简单快捷,不过方案二可以熟悉更多的命令。

这里顺便总结一些常用keytool命令:
1、创建普通证书:
keytool -genkey -alias test -keypass 654321 -keyalg RSA -keysize 2048 -validity 36500 -keystore C:\xxx -storepass 123456

2、创建pkcs12证书:
keytool -genkey -v -alias test -keyalg RSA -storetype PKCS12 -keystore C:\xxx -storepass yourStorePass -keypass yourAliasPass -validity 36500

3、在已有证书里增加alias:
keytool -genkey -alias test1 -keypass 654321 -keyalg RSA -keysize 2048 -validity 36500 -keystore C:\xxx -storepass 123456

4、删除证书里的alias:
keytool -keystore C:\xxx -delete -alias test

5、修改alias密码:
keytool -keypasswd -alias test -keystore C:\xxx

6、查看 keystore信息:
keytool -list -v -keystore debug.keystore

7、空包签名:
jarsigner -verbose -keystore [keystorePath] -signedjar [apkOut] [apkIn] [alias]

8、打开待查看的apk,将其中META-INF文件夹解压出来,得到其中的CERT.RSA文件

keytool -printcert -file META-INF/CERT.RSA
更多命令可cmd 输入keytool查看:
-certreq 生成证书请求
-changealias 更改条目的别名
-delete 删除条目
-exportcert 导出证书
-genkeypair 生成密钥对
-genseckey 生成密钥
-gencert 根据证书请求生成证书
-importcert 导入证书或证书链
-importpass 导入口令
-importkeystore 从其他密钥库导入一个或所有条目
-keypasswd 更改条目的密钥口令
-list 列出密钥库中的条目
-printcert 打印证书内容
-printcertreq 打印证书请求的内容
-printcrl 打印 CRL 文件的内容
-storepasswd 更改密钥库的存储口令

使用 “keytool -command_name -help” 获取 command_name 的用法
————————————————
版权声明:本文为CSDN博主「码仔时光」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/xiaoerye/article/details/114284426

2,这个案例应该是windows下的,但解决方案的命令是一样的。
https://www.codenong.com/jscab20552d641/
JKS 密钥库使用专用格式。建议使用 “keytool -importkeystore -srckeystore D:\android_keystore.jks – pkcs12” 迁移到行业标…

Key was created with errors:
Warning:
JKS 密钥库使用专用格式。建议使用 “keytool -importkeystore -srckeystore D:android_keystore.jks -destkeystore D:android_keystore.jks -deststoretype pkcs12” 迁移到行业标准格式 PKCS12。

出现这个问题,应该使用系统安装的 jdk ,下载地址如下:
https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

安装路径
D:Program Files (x86)jdk8in
打开Win+R 打开输入cmd
打开到安装路径,命令如下:
?D:
cd ?D:Program Files (x86)jdk8in

执行如下命令:
keytool -genkey -alias android-alias -keypass 998866 -keyalg RSA -keysize 2048 -validity 36500 -keystore D:android-key-store.keystore -storepass 998866

?-alias 后面的内容android-alias是自定义
?-keypass 后面?998866自定义密码
-keystore后面 D:android-key-store.keystore 填写自己电脑的盘符路径
-storepass 后面?998866 自定义密码
注意:以上四项信息Android Studio 打包的时候需要填写的

按Eenter 输入 您的名字与姓名是什么? 等信息,如下图:?
在这里插入图片描述

keystore 信息
无错误提示,就说明打包证书生成功。

  • 25
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值