移动终端安全:实验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 小时前
SQLMap 详解
安全
网安INF12 小时前
SSL/TLS密钥派生机制与安全攻防体系深度解析
网络·安全·网络安全·密码学·ssl
飞飞传输12 小时前
守护医疗隐私,数据安全摆渡系统撑起内外网安全伞!
大数据·运维·安全
xiatianxy12 小时前
有限空间作业智能设备:云酷科技守护安全与效率
安全·有限空间作业·有限空间监测设备
Guheyunyi12 小时前
视频安全监测系统的三大核心突破
大数据·运维·服务器·人工智能·安全·音视频
晴天¥12 小时前
Oracle中的安全管理(用户、权限、角色)
数据库·安全·oracle
EkihzniY13 小时前
二要素认证:eSIM开户的安全基石
安全
汽车仪器仪表相关领域13 小时前
GZCVL T-II 安全防坠器测试系统
功能测试·测试工具·安全·单元测试·压力测试·可用性测试
乾元13 小时前
AI 驱动的入侵检测与异常会话判别:从规则到行为分析前言:从“捕获敌人”到“守卫秩序”
运维·网络·人工智能·网络协议·安全