移动终端安全:实验2-创建自签名证书对APP签名

实验步骤

1.直接安装我们实验要用的.apk

2、获取未签名的app

(1)删除META-INF文件

取消自动签名,直接删除改文

(2)查看此时app是否为未签名app

3、创建自签名证书

(1)打开keytool,生成私钥

keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000

参数说明:

  • keystore:密钥库文件名
  • alias:密钥别名
  • validity:有效期(单位:天)

按提示填写信息(如姓名、组织、城市等),设置密码(记住它,后面要用)。

4、对app签名

(1)使用 jarsigner 对 APK 签名:

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.keystore unsigned.apk my-key-alias

输入密钥库密码和密钥密码(如果设置了不同密码)。

5、安装app

(1)检查app的签名

jarsigner -verify -verbose -certs unsigned.apk

利用上述方法我们重新进行高强度签名。

这里我们直接使用MT管理器进行重签

查看重新签名后文件

(2)测试app是否能够正常安装

可以安装成功

总结

一、传统方案(JDK 自带)知识点速览

  1. 角色与文件
    • keystore(.jks/.p12)= 包含 私钥 + 证书链
    • alias = 私钥在库里的"名字"
    • APK 本质 = ZIP,签名信息放在 META-INF(*.SF / *.RSA / *.MF)
  2. 两条命令
    • 生成私钥keytool -genkeypair -keystore xxx.jks -alias xxx -keyalg RSA -keysize 2048 -validity 3650
    • 签名jarsigner -sigalg SHA256withRSA -digestalg SHA-256 -keystore xxx.jks apk.apk alias
  3. 验证 jarsigner -verify -verbose -certs apk.apk出现 jar verified 即可。
  4. 缺点

❌ 仅支持 V1 签名方案(JAR 签名)

❌ 对 ZIP 内容顺序/压缩方式敏感,无法对齐后签名

❌ 不支持 旋转密钥、密钥轮换

❌ 弱算法(SHA1/MD5)已被 Java 标记为 "视为未签名"


二、先进方式:Google 官方 APK Signature Scheme

  1. 工具升级

    • apksigner (Android SDK/build-tools 24.0.3+)同时支持 V1(JAR)+ V2(APK 全文)+ V3(密钥轮换)+ V4(增量/ADB)
    • zipalign 必须在 apksigner 之前 运行,保证内存对齐。
  2. 完整流程(推荐脚本)

    `# 1. 对齐 zipalign -v -p 4 unsigned.apk aligned.apk

    # 2. 签名(V1+V2+V3 全开) apksigner sign --ks release.jks --ks-key-alias release --out signed.apk aligned.apk

    # 3. 验证 apksigner verify -v --print-certs signed.apk`

    输出 Verified using v1 scheme (true), v2 scheme (true), v3 scheme (true) 即通过。

  3. 密钥与轮换

    • V3 方案支持 密钥轮换 :旧密钥 + 新密钥 交叉签名 ,可实现 无损更换签名证书(用户可无缝更新)。

    • 旋转命令

      apksigner rotate --out new.keystore --old-signer \\ --ks old.jks --new-signer --ks new.jks

  4. 算法与兼容性

    • 默认使用 SHA-256 / RSA-2048(也可 ECC:SHA-256 / ECDSA-P-256)
    • Android 7.0+ 支持 V2;Android 9.0+ 支持 V3;Android 11+ 支持 V4。
    • 同时开启多版本 向下兼容 :低版本只识别 V1,高版本优先校验 V2/V3,速度+安全性双提升
  5. CI/CD 集成

    • Google Play App Signing 强制要求上传 V2+ 签名;
    • 在 GitHub Actions / GitLab CI 里加两步即可:zipalign + apksigner sign --ks-key-alias ${``{ secrets.ALIAS }} --ks-key-pass pass:${``{ secrets.KP }} --ks-pass pass:${``{ secrets.KSP }} ...

  1. 本地调试/老旧教程 :jarsigner 够用,但记得 SHA-256 以上算法。
  2. 上架 Play / 新应用zipalign → apksigner 一步到位,同时开启 V1+V2+V3
  3. 长期维护 :启用 Google Play App Signing + V3 密钥轮换,以后证书过期也能无缝迁移。
相关推荐
深盾科技10 小时前
如何读懂Mach-O:构建macOS和iOS应用安全的第一道认知防线
安全·macos·ios
wanhengidc11 小时前
云手机ARM架构都具有哪些挑战
运维·服务器·安全·游戏·智能手机
KKKlucifer12 小时前
Gartner 2025 中国网络安全成熟度曲线深度解读:AI 安全如何重构防御逻辑
人工智能·安全·web安全
FreeBuf_13 小时前
微软警示AI驱动的钓鱼攻击:LLM生成的SVG文件绕过邮件安全检测
人工智能·安全·microsoft
灵雀云14 小时前
灵雀云六度入选 Gartner 中国 ICT 技术成熟度曲线报告,ACP以安全、稳定、智能三大核心能力定义企业级云原生数字底座
安全·云原生
Bruce_Liuxiaowei14 小时前
Kerberos协议深度解析:工作原理与安全实践
运维·windows·安全·网络安全
RuningPigNO115 小时前
企业在拥抱 Al技术过程中面临安全风险是什么
安全
粟悟饭&龟波功15 小时前
【网络安全】四、中级篇:SQL注入详解
sql·安全·web安全
FIN66681 天前
新天力:食品容器安全与创新的领航者
科技·安全·产品运营·创业创新·制造