使用命令生成android端证书:
keytool -genkey -v -keystore release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000
说明:
keytool | 是一个工具命令 |
-v | 指的是将生成证书的详细信息打印到终端 |
-genkey | 表示生成key |
-keystore release-key.keystore | 指定生成的密钥文件名,release-key.keystore就是指定的文件名,.keystore是证书的扩展名 |
-alias alias_name | 别名,这里指定别名为alias_name |
-keyalg RSA | 生成密钥文件所用的算法,这里为RSA |
-validity 10000 | 该密钥的有效天数 |
-keysize 2048 | 指定2048位的密钥 |
下面是生成证书的过程(按照上面的工具模板,根据自己的需求稍微调整)
keytool -genkey -v -keystore realease.jks -alias flutter_demo_realease -keyalg RSA -keysize 2048 -validity 10000
![46a30380b307d91de52aa6f6404522cd.png](https://i-blog.csdnimg.cn/blog_migrate/1953c9239245cebbd50bc442308d5671.jpeg)
注意上面红色标记的提示信息,其实我的预期是希望直接执行命令生成.jks的证书,虽然我把需要生成的证书后缀名修改了,但是按照提示信息来看,生成的文件应该不是标准的.jks格式,所以提示信息给出了从.keystore转换到.jks的方法。
可能有的同学想跟我有一样的问题,.jks和.keystore两种证书有什么分别呢?下面是我找到的答案:
keystore 是Eclipse 打包生成的签名。
jks是Android studio 生成的签名。
都是用来打包的,并保证应用的唯一性,这就是他们的最大的区别!
备注:很多第三方市场,我们上传apk的时候,他们只支持keystore,需要我们把.jks签名转化为.keystore!
好了,言归正传,既然它告诉我们JKS 密钥库使用专用格式,那么我们不妨按提示,转换一下格式,执行命令:
keytool -importkeystore -srckeystore realease.jks -destkeystore realease.jks -deststoretype pkcs12
按照提示输入生成证书时候的口令,转换完成
![07ae5e5696df6c62aacc91264c02f51f.png](https://i-blog.csdnimg.cn/blog_migrate/8d2453ae9e64cba9a0522f6e3aec106a.png)
注意:转换好的证书文件和生成证书的口令记得保存好,打包时一般需要配置对应的证书签名信息,需要用到。
查看证书信息:
在一些场景我们需要用到证书的指纹信息(比如配置firebase的推送环境时),我们如何获取证书的指纹信息呢?
执行命令:
keytool -list -v -keystore realease.jks
![b370e16ebd276e9ccedc4a4e76b69db2.png](https://i-blog.csdnimg.cn/blog_migrate/0d6dc5315109d2755b87b7c7ab61b172.jpeg)