1、android 系统签名文件目录在

build/target/product/security

其中包含的签名文件有,media.pk8,media.x509.pem;platform.pk8,platform.x509.pem;releasekey.pk8,releasekey.x509.pem;shared.pk8,shared.x509.pem;testkey.pk8,testkey.x509.pem

2、签名文件生成方法,看到目录中的 README 文档

The test keys in this directory are used in development only and should
NEVER be used to sign packages in publicly released images (as that would
open a major security hole).key generation
--------------The following commands were used to generate the test key pairs:development/tools/make_key testkey  '/C=US/ST=California/L=Mountain View/O=Android/OU=Android/CN=Android/emailAddress=android@android.com'development/tools/make_key platform '/C=US/ST=California/L=Mountain View/O=Android/OU=Android/CN=Android/emailAddress=android@android.com'development/tools/make_key shared   '/C=US/ST=California/L=Mountain View/O=Android/OU=Android/CN=Android/emailAddress=android@android.com'development/tools/make_key media    '/C=US/ST=California/L=Mountain View/O=Android/OU=Android/CN=Android/emailAddress=android@android.com'

通过 development/tools/ 下的 make_key 命令可以生成独一无二的 key,各个参数的含义如下

C —> Country Name (2 letter code)
ST —> State or Province Name (full name)
L —> Locality Name (eg, city)
O —> Organization Name (eg, company)
OU —> Organizational Unit Name (eg, section)
CN —> Common Name (eg, your name or your server’s hostname)
emailAddress —> Contact email address

一般不要输入密码,引出不必要的问题,直接回车。生成 key 后,拷贝至 build/target/product/security/新建文件夹/

例如 build/target/product/security/tencent/ 目录下,原来的 test相关 key 保留

3、修改 android 编译时默认签名使用 tencent/ 目录下

DEFAULT_SYSTEM_DEV_CERTIFICATE 默认 release

build/make/core/Makefile

-ifeq ($(DEFAULT_SYSTEM_DEV_CERTIFICATE),build/target/product/security/testkey)
-BUILD_KEYS := test-keys
+# ifeq ($(DEFAULT_SYSTEM_DEV_CERTIFICATE),build/target/product/security/testkey)
+# BUILD_KEYS := test-keys
+ifeq ($(findstring release,$(DEFAULT_SYSTEM_DEV_CERTIFICATE)), release)
+BUILD_KEYS := release-keyselse

指定签名文件为 tencent 下的 releasekey
build/make/core/config.mk

DEFAULT_SYSTEM_DEV_CERTIFICATE := $(PRODUCT_DEFAULT_DEV_CERTIFICATE)else
-  DEFAULT_SYSTEM_DEV_CERTIFICATE := build/target/product/security/testkey
+  # DEFAULT_SYSTEM_DEV_CERTIFICATE := build/target/product/security/testkey
+  DEFAULT_SYSTEM_DEV_CERTIFICATE := build/target/product/security/tencent/releasekeyendif

system/sepolicy/private/keys.conf
system/sepolicy/prebuilts/api/26.0/private/keys.conf

-ENG        : $DEFAULT_SYSTEM_DEV_CERTIFICATE/testkey.x509.pem
-USER      : $DEFAULT_SYSTEM_DEV_CERTIFICATE/testkey.x509.pem
-USERDEBUG : $DEFAULT_SYSTEM_DEV_CERTIFICATE/testkey.x509.pem
+ENG       : $DEFAULT_SYSTEM_DEV_CERTIFICATE/releasekey.x509.pem
+USER      : $DEFAULT_SYSTEM_DEV_CERTIFICATE/releasekey.x509.pem
+USERDEBUG : $DEFAULT_SYSTEM_DEV_CERTIFICATE/releasekey.x509.pem

4、查看签名apk的签名信息

keytool -printcert -jarfile xxx.apk
使用这个命令能够查看apk所使用签名的相关信息,如下图所示

5、系统不同签名文件的区别

sharedUserId

每个apk或文件,系统都会分配属于自己的统一的用户ID(UID),创建沙箱保证其他应用的影响或影响其他应用。如:一般应用只能访问自己包名下的文件(/data/data/pkgname),不能反问其他包名下的,其他应用也访问不了自己包名下的文件。
sharedUserId,拥有同一user id的应用 之间就可以共享数据库和文件,相互访问。这些应用可以运行在同一进程,也可以运行不同进程。

sharedUserId与签名文件

只有拥有相同sharedUserId标签的,且拥有相同签名的 应用才能分配相同的用户ID,实现数据共享。如果仅仅拥有相同sharedUserId标签,是无法确保安全的,也很容易被非法利用。

系统中5类签名文件说明

platform:平台的核心应用签名,签名的apk是完成系统的核心功能。这些apk所在的进程UID是system。manifest节点中有添加android:sharedUserId=“android.uid.system”。

media: 这个签名的apk是media/download的一部分。manifest节点中有添加android:sharedUserId=“android.media”。

shared:这个签名的apk可以和home/contacts进程共享数据。manifest节点中有添加android:sharedUserId=“android.uid.shared”。

testkey/releasekey:平台默认key。在编译中未指定LOCAL_CERTIFICATE的,默认是用testkey。因为testkey是公开的,任何人都可以获取,不安全,所以一般使用 自己创建releasekey作为默认key

6、更换 release 签名后 ota 升级错误日志

finding update package…
opening update package…
verifying update package…
installing update…
Source : alps/full_k37tv1_64_bsp/1583399226:eng/release-keys
Target : alps/full_k37tv1_64_bsp/1583972248:eng/release-keys
verifying current system…
Devices was remounted R/W 1 times
Last remount happened on Tue Jan 1 00:01:27 2019
E1004: system partition fails to recover
E:Error in @/cache/recovery/block.map(Status 7)

Installation aborted.

因为编译验证的 eng 版本,而且通过 adb remount 过,所以校验失败。
解决办法重新烧写,不要 remount,再次 ota 成功升级

7、android 源码制作jks签名文件

三条指令搞定,先进入签名文件目录 /build/target/product/security

1\   openssl pkcs8 -inform DER -nocrypt -in platform.pk8 -out platform.pem2\ openssl pkcs12 -export -in platform.x509.pem -out platform.p12 -inkey platform.pem -password pass:123456 -name xxx3\    keytool -importkeystore -deststorepass 123456 -destkeystore platform.jks -srckeystore platform.p12 -srcstoretype PKCS12 -srcstorepass 123456storePassword '123456'keyAlias 'xxx'keyPassword '123456'

参考文章

Android系统签名简介

Android 系统生成 releasekey相关推荐

  1. Android OTA releasekey 替换

    在Amlogic T950平台上用公司的OTA 签名key替换Android默认的testkey,过程记录如下: 1.生成key   系统默认的key如下,首先需要产生以下4种我们项目自己的OTA签名 ...

  2. Android DEX加壳

    1. APP加固 1). 原理 图1.png 加密过程的三个对象: 1.需要加密的Apk(源Apk) 2.壳程序Apk(负责解密Apk工作) 3.加密工具(将源Apk进行加密和壳Dex合并成新的Dex ...

  3. PHONEGAP BUILD

    http://www.cnblogs.com/meteoric_cry/archive/2011/11/15/2249139.html#commentform 纯粹属于闲折腾的结果,只是这中间还遇到一 ...

  4. Android 生成自己的签名key(releasekey platform shared media networkstack verify等)

    Android官方文档 https://source.android.google.cn/devices/tech/ota/sign_builds?hl=zh-cn https://android.g ...

  5. android studio 发布项目的流程

    第一步 第二部 如果创建过可以选着存在的没有的就信创建一个 新创建的如下图 英文都很简单也就没有写翻译,大致就是添加路劲一般jks都是放在自己项目的app下面, 密码输入之后就行了,jks的名字是需要 ...

  6. android ecplise 的 项目结构目录

    下面以一个小demo为例子 src :java源码 gen:是系统生成资源id的文件 libs:导入第三方jar包 assets:资源文件夹一般存放视频,音频等较大的文件 bin:编辑打包后自动生成的 ...

  7. android APK内存多少字节,Android apk安全测评、应用加固、字节对齐、二次签名(有这一篇就够了)...

    本文将通过前言.apk安全测评.应用加固.字节对齐.二次签名.总结共6大版块来阐述 一.前言 评判一个App是否出色,除了看它的性能.体验外,本人认为最为重要的是它的安全性.市面上apk安全评测.加固 ...

  8. android studio 使用CMAKE

    2019独角兽企业重金招聘Python工程师标准>>> 原文地址 前言 之前,每次需要边写C++代码的时候,我的内心都是拒绝的.  1. 它没有代码提示!!!这意味着我们必须自己手动 ...

  9. Android开源项目分类汇总-转载

    太长了,还是转载吧... 今天在看博客的时候,无意中发现了@Trinea在GitHub上的一个项目Android开源项目分类汇总,由于类容太多了,我没有一个个完整地看完,但是里面介绍的开源项目都非常有 ...

最新文章

  1. 论如何骗过计算机视觉AI网络,UCLA专家为你支几招
  2. 直线和圆交点 halcon_初中数学三角形、四边形、圆辅助线的添加方法
  3. node.js 没有转发_如何用Nodejs编写一个定时消息提醒应用?
  4. 【PP操作手册】创建和下达返修生产订单
  5. Telerik RadGridView动态增删行及行列操作
  6. kali 安装搜狗输入法
  7. NHibernate初探-SQLDialects
  8. 秒懂物理计算机出题规划,57张动图, 让你秒懂高中物理原理! 考试次次拿第一
  9. 以后再想大数据杀熟就没那么容易了
  10. 光纤通信中的直接检测和相干检测系统
  11. matlab里vpa怎么用_“学校里的师兄师姐,用英文怎么说?”
  12. 卷积神经网络的前世今生
  13. 选择WORD文档中的所有表格宏代码
  14. 刚刚GitHub 收购 npm,旨在提升开源软件供应链安全
  15. django 业务代码写哪儿_测试人员快速上手Django指南
  16. 使用google analytics(分析)监测百度竞价关键词效果(网址构建工具)
  17. 三星s9 android p内测,三星国行Galaxy S9/S9+用户安卓9.0内测:更新One UI
  18. 4.1 NI-USRP简介
  19. 火影忍者、英雄联盟国内版、和平精英强开90/120帧方法
  20. 关键字驱动和数据驱动

热门文章

  1. 量化择时之移动平均线初探
  2. NO_ACCESS Protection
  3. protege的下载
  4. 单线激光雷达(Lidar)学习一:使用单线lidar进行测距
  5. SSD的三组成部件简介:主控芯片 闪存芯片 固件算法
  6. 【面试通关篇】13个offer,8家SSP,谈谈我的秋招经验
  7. 【问题】Ucinet密度分析结果一直是1.000
  8. 7.python基础之基础数据类型--字典dict
  9. Java程序实现Word文档转为pdf以及出现的问题解决
  10. { content-visibility: auto; contain-intrinsic-size: 1px 5000px;}