我们在使用或发布应用到第三方平台时,会要求我们填写应用的相关信息,比如包名、md5值或者sha1值等等。如果是我们自己的应用,获取测试或者正式应用的相关信息都是比较方便的。如果需要第三方应用的相关信息,别人又没有提供相关信息,那么怎样去获取我们所需的信息呢?下面就介绍一下如何查看keystore文件和三方应用签名的方法。
查看应用签名的MD5、SHA1、SHA256值及签名算法。
1. 查看keystore文件签名
查看keystore文件签名信息,前提要有keystore文件和密钥,才能够获取keystore文件的签名信息。
方法一:(适用于 AS)
1)打开 AS工具窗口栏右边的 Gradle -> Project -> app -> Tasks -> android -> signingReport,双击运行 signingReport;
2)signingReport 运行完后,就可以看到
debug
和release
版签名的相关信息;方法二:(适用于 ES 和 AS)
1)在系统命令面板(win R —— cmd)或者 AS底端工具类里的 Terminal 中输入命令:
keytool -list -v -keystore [签名文件路径]
2)输入密钥库口令(输入口令时隐藏不展示输入内容),点击回车键;
3)密钥口令校验正确后,就可以看到签名的相关信息。
2. 查看三方应用签名
在没有keystore文件和密钥的情况下,要想查看我们所需应用的签名信息,就需要借助keytool
工具来完成。
首先解压要查看的apk包,通过数据证书管理工具keytool
查看apk的签名信息。具体步骤如下:
1)将apk修改后缀为.rar
文件后进行解压;
2)进入解压后的META-INF
目录,找到该目录下的xxx.RSA
文件;
3)通过命令cmd
打开DOS窗口,输入命令 :keytool -printcert -file [RSA文件路径]
3. 解决应用签名问题
在查看应用签名信息过程中,可能会遇到以下几个问题:
- Q1. keytool 命令运行失败
'keytool' 不是内部或外部命令,也不是可运行的程序或批处理文件。
定位keytool.exe
工具所在的目录,使用相关操作命令查看签名信息;
具体步骤如下:
1)在jdk的安装文件夹的bin目录(例如:
C:\Program Files\Java\jdk1.8.0_202\bin
)下,使用快捷操作 shift + 右击,选择 在此处打开命令窗口 打开DOS窗口;2)输入操作命令 :
keytool -list -v -keystore [签名文件路径]
或者keytool -printcert -file [RSA文件路径]
查看签名信息;
- Q2. 密钥库使用警告
Warning:
JKS 密钥库使用专用格式。建议使用 "keytool -importkeystore -srckeystore xxx.jks -destkeystore xxx.jks -deststoretype pkcs12" 迁移到行业标准格式 PKCS12。
JKS(Java KeyStore)
:是 Java 的 keytools 证书工具支持的证书私钥格式。jks 包含了公钥和私钥,可以通过 keytool 工具来将公钥和私钥导出。因为包含了私钥,所以 jks 文件通常通过一个密码来加以保护。一般用于 Java 或者 Tomcat 服务器。
PKCS #12
:定义了一种存档文件格式,用于实现存储许多加密对象在一个单独的文件中。通常用它来打包一个私钥及有关的 X.509 证书,或者打包信任链的全部项目。
定位keytool.exe
工具所在的目录,使用操作命令转换证书格式;
具体步骤如下:
1)在jdk的安装文件夹的bin目录(例如:
C:\Program Files\Java\jdk1.8.0_202\bin
)下,使用快捷操作 shift + 右击,选择 在此处打开命令窗口 打开DOS窗口;2)输入命令 :
keytool -importkeystore -srckeystore [签名文件路径] -destkeystore [签名文件路径] -deststoretype pkcs12
命令把 JKS 格式证书转换成 PKCS12 格式证书;3)转换成功后,就会在目标文件夹看到新的替换签名证书
xxx.jks
和旧的重命名签名证书xxx.jks.old
。