【发布时间】:2018-02-27 19:27:31
【问题描述】:
我知道证书包含公钥和一些额外信息(我希望如此),但它是否保存在 apk 文件中?它是文件还是文本或什么?什么是签名? 在 Android 中,我们可以轻松读取哪一个来验证应用程序?
【问题讨论】:
标签: android certificate apk signature
我知道证书包含公钥和一些额外信息(我希望如此),但它是否保存在 apk 文件中?它是文件还是文本或什么?什么是签名? 在 Android 中,我们可以轻松读取哪一个来验证应用程序?
【问题讨论】:
标签: android certificate apk signature
证书和密钥库
公钥证书,也称为数字证书或身份证书,包含公钥/私钥对的公钥,以及标识密钥所有者的其他一些元数据(例如,姓名和地点)。证书的所有者持有相应的私钥。
当您对 APK 进行签名时,签名工具会将公钥证书附加到 APK。公钥证书充当“指纹”,将 APK 与您和您的相应私钥唯一关联。这有助于 Android 确保将来对您的 APK 的任何更新都是真实的并且来自原作者。用于创建此证书的密钥称为应用签名密钥。
密钥库是包含一个或多个私钥的二进制文件。
每个应用程序必须在其整个生命周期内使用相同的证书,以便用户能够安装新版本作为应用程序的更新。如需详细了解在所有应用的整个生命周期内使用相同证书的好处,请参阅下面的签名注意事项。
签署您的调试版本
从 IDE 运行或调试您的项目时,Android Studio 会自动使用由 Android SDK 工具生成的调试证书对您的 APK 进行签名。首次在 Android Studio 中运行或调试项目时,IDE 会自动在 $HOME/.android/debug.keystore 中创建调试密钥库和证书,并设置密钥库和密钥密码。
由于调试证书是由构建工具创建的,并且在设计上不安全,因此大多数应用商店(包括 Google Play 商店)将不接受使用调试证书签名的 APK 进行发布。
Android Studio 会自动将您的调试签名信息存储在签名配置中,因此您不必在每次调试时都输入它。签名配置是一个对象,包含对 APK 进行签名的所有必要信息,包括密钥库位置、密钥库密码、密钥名称和密钥密码。您不能直接编辑调试签名配置,但您可以配置如何对发布版本进行签名。
有关如何构建和运行用于调试的应用程序的更多信息,
【讨论】:
当您编译您的APK 时,最后的步骤之一是签署您的APK。实际上它正在添加3个小文件。您可以将任何APK 重命名为ZIP,解压缩它,您将找到目录META-INF - 它是您的签名信息。
MANIFEST.MF 和 CERT.SF 非常相似,包含文件列表及其 sha1/sha256 哈希和(一个用于文件,第二个仅用于第一个文件的条目)和 CERT.RSA 是 x509 证书你的公钥。
【讨论】:
据我所知(我对 android 开发相当陌生),您使用证书签署您的 apk。如果我错了,请有人纠正我。
以下是一些附加信息: https://source.android.com/security/apksigning/v2 https://developer.android.com/studio/publish/app-signing.html
此外,如果您想通过 google play 商店发布,请务必了解以下信息: The apk must be signed with the same certificates as the previous version
【讨论】: