当前位置: 首页 > news >正文

移动终端安全:实验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 PlayApp 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 密钥轮换,以后证书过期也能无缝迁移。

http://www.jsqmd.com/news/13581/

相关文章:

  • Oracle OCM 认证的定位与价值
  • 2025 优质防爆接线盒/防爆穿线盒/防爆接电箱厂家推荐榜:安全与专业兼具的行业之选
  • Microsoft Purview实现数据泄露概率降低30%的技术解析
  • Day13-C:\Users\Lenovo\Desktop\note\code\JavaSE\Basic\src\com\exception
  • 2025 值得关注的除锈剂厂家企业推荐榜单,覆盖多场景需求
  • Day3整形输入
  • 2025优质电缆/防火/模压/瓦楞/大跨距/热镀锌/热浸锌/不锈钢/光伏/铝合金/锌铝镁桥架厂家推荐:五家实力企业的技术与服务特色解析
  • 2025 领域优质石油/电厂/钢铁厂/化工/消防/船舶/住宅/管道/隧道/地铁电伴热带厂家推荐榜单,工业与民用场景全覆盖
  • springboot实现支付宝支付
  • Pendle Finance 详解:DeFi 中的“收益拆分器”——新手指南
  • springboot实现微信支付
  • Hyperliquid 主链的技术栈详解
  • trading
  • 10080 端口打不开页面
  • 学生信息管理系统DAO模式改造报告
  • pringcloud 中的gateway详解一下,其中的原理
  • Hive -2025/8/19
  • 2025年10月学术会议全名单!科研人请抢先收藏,别错过关键节点!
  • 用 Python + Vue3 打造超炫酷音乐播放器:网易云歌单爬取 + Three.js 波形可视化
  • 读书笔记:时间戳(TIMESTAMP)类型:比日期更强大的时间管理工具
  • python对比“解包赋值”和 match 语句中的“解构”
  • 2025 防静电/耐高温/耐低温/耐湿耐水/防油/耐酸耐碱/进口原料塑烧板厂家推荐榜单:聚焦高效过滤解决方案
  • 2025 优质的数控/空心管/螺旋/钢带/方向盘/伺服/液压/不锈钢带/桶箍/抱箍/卡箍/弹簧打圈机厂家推荐榜单:聚焦精度与服务的实力之选
  • 在线PS(Photoshop网页版)如何加马赛克,保护隐私的小技巧
  • 2025 深圳点胶机厂家实用推荐榜:从精密制造到行业适配的优选指南
  • 观点分享:Oracle数据库GRID升级的案例的闲聊
  • 2025 广东洗头机厂家推荐榜:从家用到商用的品质之选
  • 深入解析:XC7A100T-2CSG324I 赛灵思 Xilinx AMD Artix-7 FPGA
  • 2025北京优质拆迁/征地/征拆/动迁/腾退/强拆/房产/烂尾楼/行政诉讼/行政赔偿律师事务所所推荐:聚焦专业实力与服务价值
  • excel单元格粘贴显示科学计数法,需要展示完整的字符串的解决方法