1***@qq.com
1***@qq.com
  • 发布:2021-03-24 20:19
  • 更新:2022-06-08 14:46
  • 阅读:5567

生成的安卓证书提示不是有效的keystore文件

分类:HBuilderX

windows 10环境下,根据官网生成安卓证书的方法:
keytool -genkey -alias aaa -keyalg RSA -keysize 2048 -validity 36500 -keystore aaa.keystore
生成aaa.keystore后,用这个证书去云打包,打包渠道为google,但一直提示:
证书文件不是有效的keystore文件
Google开发者证书信息有误,请正确填写相关信息

第一次接触打包,请问下,官方给的命令是不是有什么没有说明的要求?还是还有什么步骤?

2021-03-24 20:19 负责人:无 分享
已邀请:
1***@qq.com

1***@qq.com (作者)

百度到了这个方案可以正常打包,但提示用到的SHA1WithRSA存在安全问题,不知道官方有没解决方案

MonikaCeng

MonikaCeng

你用的jdk是哪个版本?
版本太高我记得也不兼容
建议用jdk8去生成签名

  • 1***@qq.com (作者)

    谢谢关注!我下载的确实是最新版本的,测试过多次后,原因确实是环境引起的。

    2021-03-25 11:22

  • MonikaCeng

    回复 1***@qq.com: 所以最新版本JDK签名没兼容问题?

    2021-03-25 12:41

  • 1***@qq.com (作者)

    回复 MonikaCeng: 应该不是版本问题,应该是直接通过CMD命令执行的环境和在android studio中的终端执行环境有略微的不同(我也不知道哪里不同),后者生成的证书就没问题。

    2021-03-25 14:30

  • MonikaCeng

    回复 1***@qq.com: android studio自带的jdk是8版本,所以我怀疑版本问题。然后我自己换成jdk8用命令行就行,高版本不行。从这个探索过程,我怀疑是版本太高不行,只是个人猜测

    2021-03-25 17:51

1***@qq.com

1***@qq.com (作者)

问题已经解决了,我把整个过程复盘下~
环境:windows10;

一、过程复盘:
step1、 按官方生成证书,未报错:【CMD命令执行】
keytool -genkey -alias aaa.keystore -keyalg RSA -keysize 2048 -validity 36500 -keystore aaa.keystore
注意:aaa.keystore要改成自己的证书名称
生成的证书通过keytool -list -v -keystore aaa.keystore查看也正常;

step2、 HB上打包提示“证书文件不是有效的keystore文件”;

step3、解决思路一:【CMD命令执行】
百度出来加上SHA1WithRSA指令,可以正常打包,但存在安全性,指令为:
keytool -genkey -alias aaa.keystore -keyalg RSA -sigalg SHA1WithRSA -validity 36500 -keysize 1024 -keystore aaa.keystore -v
keytool -importkeystore -srckeystore ./aaa.keystore -destkeystore ./aaa.keystore -deststoretype JKS

step4、解决思路二:【工具环境判断】
1-3执行的都是jdk-16\bin目录下的keytool工具,怀疑是不是这个环境的有问题?
于是重新下载了JRE的环境,用\jre-8\bin目录下的keytool再次生成证书,结果报错了:
“keytool错误:java.io.IOException:Invalid keystore format”

step5、 解决思路三:【执行环境判断】
尝试下在Android Studio的Terminal中执行命令:
keytool -genkey -alias aaa.keystore -keyalg RSA -keysize 2048 -validity 36500 -keystore aaa.keystore
keytool -importkeystore -srckeystore aaa.keystore -destkeystore aaa.keystore -deststoretype pkcs12
生成证书成功!
HB上打包成功!

step6、解决思路四:【版本环境判断】
如果5没有成功的话,就只能再试试安装较低版本的SDK看看了,这个没有继续尝试。

二、方式总结:
1、输入证书生成指令:
keytool -genkey -alias aaa.keystore -keyalg RSA -keysize 2048 -validity 36500 -keystore aaa.keystore
证书名\秘钥库口令\姓名姓氏\组织名称\城市\省份\国家——根据自身需要输入

2、将JKS秘钥库转为pkcs12:
keytool -importkeystore -srckeystore aaa.keystore -destkeystore aaa.keystore -deststoretype pkcs12

3、查看证书信息:
keytool -list -v -keystore aaa.keystore

希望能帮到遇到类似问题的朋友!

  • 4***@qq.com

    我也是安装的最新版,按你总结的生成还是没用

    2021-04-28 15:17

  • wings_sg

    回复 4***@qq.com: 我试了使用android studio 的terminal来生成就不会出现这个问题了

    2021-04-28 15:54

  • 4***@qq.com

    回复 wings_sg: 嗯嗯,后面下载JRE8就成功了,跟JRE版本有关

    2021-05-11 19:50

  • 4***@qq.com

    我之前用的JDK16的也是无效的。换成jdk1.8.0_291这个就OK了。

    2021-05-13 19:00

  • 1***@163.com

    回复 4***@qq.com: 怎么在官网上找到这个版本呢

    2022-03-22 13:06

7***@qq.com

7***@qq.com

使用CMD环境成功生成证书

下载JRE8环境
jre1.8.0_201获取https://ask.dcloud.net.cn/article/38778 (测试成功)
https://www.oracle.com/cn/java/technologies/javase/javase-jdk8-downloads.html (未测试)

配置环境变量, 重启电脑

查看java -version 版本

生成步骤
keytool -genkey -alias test -keyalg RSA -keysize 2048 -validity 36500 -keystore test.keystore
keytool -importkeystore -srckeystore test.keystore -destkeystore test.keystore -deststoretype pkcs12
keytool -list -v -keystore test.keystore

英曼畅学

英曼畅学 - 混合开发两年半,博客https://yuanjkeji.com/

用工具在线生成,无需安装jdk,https://yuanjkeji.com/ios-upload

DCloud_HB_WDL

DCloud_HB_WDL

该问题目前已经被锁定, 无法添加新回复