Android如何安全替换证书

证书过期了?!!

也不知到当初是那条筋搭错了,将证书的时间弄得这么短,在这里强烈的提醒一下各位,在生成证书的时候一定要注意一下时间,一般将时间设在25年以上就可以了(上架到google play是必须在25年以上的)。现在证书过期了,那么没办法,只能换了,直接替换证书会有一个问题就是需要将之前的旧证书的app卸载之后才能重装。这就问题大了。这样用户的数据不就没了吗?看来还是得找别的方案。

V1和V2签名方式

用过Android studio的打包就会知道,在签名那块是有V1和V2两种的,勾选就可以了,使用gradlew命令去打包的也可以在build.gradle(app)中设置的:

signingConfigs {
    release {
    //code...
        v1SigningEnabled true //启用v1
        v2SigningEnabled true //启用v2
    }
}

V3签名方式

V2,解决了V1不安全的问题。V3要解决的问题就是让不同证书之间可以平滑过渡。(但是V3签名方式是有限制的,下面再说)
看了一下官方,发现签名方式有V3了(悄悄地告诉你,还有V4了)。于是就看了一下,大致的签名方式是这样的:
首先,你得准备一些文件:
old_project.jks (旧的证书,在我这就是我那过期的证书)
new_project.jks (新的)
old.apk(一个使用旧证书打包的apk,没有证书的也行)
apksigner(用于apk签名的工具,请使用29.0.2以上的,这个是在sdk中build-tools文件夹下找到的)
第二步:这一步称之为轮替,也叫沿袭,生成lineage,通过下面这条命令就可以了:

apksigner rotate --out lineage --old-signer  --ks  old_project.jks --new-signer --ks  new_project.jks

这样就会在当前文件夹下新生成一个名为“lineage”的文件。(这个文件很重要),这一步是必须旧证书在前,新证书在后,这样才是一个正确的轮替。(虽然换过来也是成功的)

第三步:使用上面所有的东西(包括生成的lineage)作V3签名:

apksigner sign --ks old_project.jks --next-signer --ks new_project.jks --lineage lineage --out release.apk --in old.apk

这样就完成了,你可以通过命令去检查一下是否已经是启用了V3

apksigner verify --verbose release.apk
检查V3签名

可以看到V3的那一行已经是true了。

鸡肋的V3

真正研究过之后发现,V3签名,很是鸡肋:
首先,V3是android 9.0开始支持的。也就是说如果你的手机是Android9.0之前的,都不能覆盖安装,第二,由于证书过期了,那么就是说无法上架到应用宝(可能有些应用市场是能上的,但是大多数应用市场是上不了的),那么使用V3签名方式打包之后的apk,由于打包过程使用了个密钥库(也就是两个.jks文件),你猜猜apk的签名是谁的呢?使用keytool -list -printcert -jarfile命令查看了一下,是旧的!!!(也就是轮替的时候放在前的证书)。所以依旧是上架失败的!!!白忙活了。除非应用市场将其检验方式换成V3的应该就可以了,可是并非所有版本的Android系统都可以直接覆盖安装,所以就算是安全上架了,系统版本低的还是要卸载才能安装。可能应用市场也是基于这个考虑吧。

最后

如果需要更详细的了解V3签名方案,可以查看官方文档Apk签名方案V3
更加详细的签名操作可以看这里apksigner

最最后

希望大家在开始项目的时候一定要检查一下使用的证书是不是有问题。如果有,赶紧重新弄一个!!!!!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,332评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,508评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,812评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,607评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,728评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,919评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,071评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,802评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,256评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,576评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,712评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,389评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,032评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,026评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,473评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,606评论 2 350

推荐阅读更多精彩内容