Jok*_*ter 5 android apk apksigner
由于最近的 SHA1 冲突新闻,我想确保在我的 apk 签名中不再使用 SHA1。但是我在apksigner 中找不到参数。
有没有办法指定(直接或间接)apksigner 使用的摘要算法?
(在 SDK 24 之前,Android 使用 javajarsigner来签署 apk,其中有类似的选项-sigalg SHA1withRSA -digestalg SHA1)
更新:正如亚历克斯提到的,我apksigner在V1SchemeSigner.java 中找到了如何确定方案 v1 的签名算法。
简而言之,apksigner从minimumSDK证书和密钥类型来确定它。
SHA256withRSA 最低 SDK 18 (Android 4.3) 及以上SHA256withDSA 最低 SDK 21 (Android 5.0) 及以上SHA256withEC 最低 SDK 18 及以上SHA1with* 用于较低的最低 SDK 级别这是我为备忘而写的常见问题解答:SHA1 Collision and Android APK Signing。
不直接。apksigner尝试仅使用安全摘要和签名算法,但它会在您的签名密钥(大小、算法)和所签名的 APK 支持的 Android 平台版本所施加的限制内执行此操作。特别是,对于 JAR 签名,apksigner默认情况下使用 SHA-256 或更强大的签名,但仅适用于仅支持 API 级别 18 或更高版本的 APK(如在minSdkVersion其 中声明的AndroidManifest.xml)。在早期平台上运行的 APK 必须使用 SHA-1,因为这些早期平台不支持使用 SHA-256 或更高版本验证 APK。对于APK签名方案v2签名,仅使用SHA-256或更强,因为该签名方案甚至不支持SHA-1。
如果您想apksigner使用 SHA-256 签署 APK,您可以:
minSdkVersion为 18 或更高,但这将使 API 级别 17 及更低版本的 Android 平台在安装时拒绝 APK。--min-sdk-version=18,apksigner但这将使 API 级别 17 及更低版本的 Android 平台在安装时拒绝 APK。--v1-signing-enabled=false仅通过传入的 APK 签名方案 v2 对 APK 进行签名apksigner,但这将使 API 级别 23 及更低版本的 Android 平台在安装时拒绝 APK。PS 即使您改为仅使用 SHA-256 签署 APK,Android 仍会接受包含您的包名称和签名证书、使用 SHA-1 或 MD5 签名的 APK。因此,根据您的威胁模型,您可能需要切换到从未与 SHA-1 或更弱的摘要算法一起使用的新签名密钥。这不仅适用于实际密码签名中使用的摘要算法,还适用于.SF和MANIFEST.MF文件中使用的摘要算法。
| 归档时间: | 
 | 
| 查看次数: | 3728 次 | 
| 最近记录: |