在前面的文章中我们使用Android Studio创建了签名用于APK文件的构建,这篇文章我们将使用keytool来反向解析一下此文件的详细内容。
事前准备
本文使用keytool反向解析的keystore文件的创建可参看如下文章:
- https://liumiaocn.blog.csdn.net/article/details/103578802
此keystore的设定信息如下所示:
设定项 | 设定值 | 项目说明 |
---|---|---|
Key store path | keyReleaseV2.jks | 签名文件名 |
Password | liumiaocn | 密码 |
Confirm | liumiaocn | 密码确认 |
Alias | release_v2_private_key | 私钥名称 |
Password | liumiaocn | 密码 |
Confirm | liumiaocn | 密码确认 |
Validity(years) | 25 | 有效期(单位:年) |
First and Last Name | Miao Liu | 持有者姓名 |
Organizational Unit | unicorn | DN的OU设定项 |
Organization | devops | DN的O设定项 |
City or Locality | DaLian | DN的L设定项 |
State or Province | LiaoNing | DN的L设定项 |
Country Code | CN | DN的C设定项 |
keytool使用介绍
详细的keytool使用方法可参看:
- https://blog.csdn.net/liumiaocn/article/details/61921014
本文示例使用的keytool
liumiaocn:Demo liumiao$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.15.2
BuildVersion: 19C57
liumiaocn:Demo liumiao$ which keytool
/usr/bin/keytool
liumiaocn:Demo liumiao$ ls -l /usr/bin/keytool
lrwxr-xr-x 1 root wheel 77 Dec 12 10:45 /usr/bin/keytool -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/keytool
liumiaocn:Demo liumiao$
注:keytool在完整的JDK安装之后,一般会保存在bin目录下
keystore文件确认
文件类型和内容确认
执行命令:file keyReleaseV2.jks
使用file命令可以看到keystore文件的类型是Java KeyStore,如果试图使用cat或者view确认文件内容,你会发现都是乱码,无法直接阅读。
liumiaocn:Demo liumiao$ file keyReleaseV2.jks
keyReleaseV2.jks: Java KeyStore
liumiaocn:Demo liumiao$
证书私钥和数字指纹确认
执行命令:keytool -keystore keyReleaseV2.jks -list -storepass liumiaocn
可以看到文件的类型和条目信息,条目详细宝库私钥名称(release_v2_private_key)以及证书的数字签名信息。
liumiaocn:Demo liumiao$ keytool -keystore keyReleaseV2.jks -list -storepass liumiaocn
Keystore type: jks
Keystore provider: SUN
Your keystore contains 1 entry
release_v2_private_key, Dec 17, 2019, PrivateKeyEntry,
Certificate fingerprint (SHA1): 75:D8:CF:88:14:C7:A7:6D:30:81:3F:7A:2C:75:1D:C8:38:42:34:B0
Warning:
The JKS keystore uses a proprietary format. It is recommended to migrate to PKCS12 which is an industry standard format using "keytool -importkeystore -srckeystore keyRelease