【发布时间】:2015-10-15 10:11:17
【问题描述】:
我正在慢慢了解 Android 应用签名这一主题,但我理解的每一步都只会引出一个进一步的问题。到目前为止我所了解的(我应该提到我的最终目标是在无头 Ubuntu 服务器上自动化 Phonegap 构建,因此我在下面编写的所有内容都使用 Phonegap CLI)
密钥库是一系列私钥-公钥对,每个密钥对都有自己的密码保护。整个密钥库也有自己的密码。 public 密钥 IS 是嵌入在 APK 中的证书。可以按如下方式检查 APK 中使用的证书
- 解压APK(毕竟是ZIP压缩包)
- 获取 META-INF/CERT.DSA 文件
- keytool -list -file /path/to/CERT.DSA 显示证书指纹。
生成公私密钥对很容易。它甚至可以通过发出一个简单的自动实现
echo y | keytool -genkeypair -dname "cn=com.example, ou=OrgUnitName, o=Org Name, c=US" -alias ANY -keypass aliasPwd -keystore /path/to/keystore -storepass keyStorePwd -validity days
我用Phonegap 构建了一个release apk,通过短信向自己发送了一个指向它的链接,下载并安装了该APK。我的手机给了我一些警告,然后安装了我的 APK。酷!。
但这让我想知道......我创建了第二个别名
echo y | keytool -genkeypair -dname "cn=com.microsoft, ou=Microsoft Mobile, o=Microsoft, c=US" -alias msft -keypass msftPwd -keystore /path/to/keystore -storepass keyStorePwd -validity 9999
这次我使用 Microsoft 别名重建了 APK,给自己发送了一个链接,然后下载并安装了它(我在这里跳过了一些安装细节)。我的 Android 手机再次给了我一些警告,但似乎并没有过分担心我声称自己是 Microsoft。
我不明白。从我在 Android 世界中读到的内容来看,使用自签名证书是一种常见的做法。所以我完全可以伪装成 microsoft.com 或其他任何人?
您应该在应用程序的预期生命周期内使用相同的证书签署所有应用程序。
如果有一天我将我的某个应用的权利出售给其他人会怎样?这要么会有效地迫使买家重新开始使用新的 Android 应用程序,要么我将不得不向他们出售所有东西,而不仅仅是一个应用程序?
显然,以上都是正在有效处理的漏洞。但是,我完全不清楚处理它们的措施可能是什么。我将非常感谢任何能够解释我的理解和推理存在缺陷的人。
【问题讨论】:
标签: android cordova apk android-keystore