作者:干将stambach_611 | 来源:互联网 | 2023-09-09 19:23
apk的签名,简单说开发者可以通过签名对应用进行标识和更新。包名在一个设备上是唯一的,这样可以避免被相同包名应用随意覆盖安装。下面介绍的是Android系统中的签名相关内容。这个私
apk的签名,简单地说,开发者可以通过签名来识别和更新APP应用。 软件包名称在单个设备上是唯一的,因此可以避免被具有相同软件包名称的APP应用程序随意复盖和安装。 这是非常重要的安全功能。
系统中的签名文件也可以签名系统中的APP应用程序,编译APP应用程序可以指定签名类型。
以下是有关Android系统中签名的内容。
安卓系统的主要签名文件
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。
安卓系统签名文件的路径
在build/target/product/security/目录下。
编译时放置签名文件
在Android.mk中,通过设置LOCAL_CERTIFICATE来实现。 例如,如果local _ certificate :=platform,请选择platform进行签名。
注意:预设不带源代码的apk APP时,通常会保留原始第三方签名。 local _ certificate 3360=已预配置。
. pk8和. x509.pem的区别
. pk8是私钥文件,用于签名apk。 此私钥必须保密保存,不能公开。
. x509.pem是证书文件,相当于公钥。 它可以公开,主要用于验证某个apk是否由相应的私钥签名。
按系统列出的签名文件差异
个人资料:
共享用户id
对于每个apk和文件,系统将分配自己的统一用户ID(UID ),并创建一个沙箱以确保其他APP应用程序的影响和对其他APP应用程序的影响。 例如,一般APP应用程序只能访问自己包名的文件(/data/data/pkgname ),不能反问其他包名的文件,其他APP应用程序也只能访问自己包名的文件
sharedUserId可以在具有相同user id的APP应用程序之间共享数据库和文件,并相互访问。 这些APP应用程序可以在同一进程中运行,也可以在不同进程中运行。
shared用户id和签名文件
只有具有相同sharedUserId标记且具有相同签名的APP应用程序才能分配相同的用户ID来共享数据。 仅具有相同的sharedUserId标签无法确保安全性,容易被非法利用。
中5种签名文件的说明
platform:平台的核心APP应用签名、签名的apk是完成系统的核心功能。 这些apk所在的进程UID是system。 manifest节点中添加了Android : shared userid=' Android.uid.system '。
签名为media:的apk是media/download的一部分。 manifest节点中添加了Android : shared userid=' Android.media '。
签名为shared:的apk可以与home/contacts进程共享数据。 manifest节点中添加了Android : shared userid=' Android.uid.shared '。
测试密钥/释放密钥:平台的默认密钥。 如果编译中未指定LOCAL_CERTIFICATE,则缺省情况下使用testkey。 由于testkey是公开的,任何人都可以获得并且不安全,因此通常使用自己创建的releasekey作为默认key。
更改平台的默认签名
在build/core/config.mk路径中,修改以下变量:
efault _ system _ dev _ certificate :=build/target /产品/security/release key
或使用宏控件进行选择。
在system/se policy/private/keys.conf和system/se policy/pre built s/API/{ API level }/private/keys.conf下,修改:
- eng : $ default _ system _ dev _ certificate/test key.x509.PEM
- user : $ default _ system _ dev _ certificate/test key.x509.PEM
- user debug : $ default _ system _ dev _ certificate/test key.x509.PEM
eng : $ default _ system _ dev _ certificate/release key.x509.PEM
user : $ default _ system _ dev _ certificate/release key.x509.PEM
user debug : $ default _ system _ dev _ certificate/release key.x509.PEM
在build/core/core/Makefile中的更改变量如下:
build _ version _ tags=release-keys
或使用宏控件进行选择。
创建平台签名
在项目目录中运行以下命令将生成一组平台、共享、介质和释放密钥签名文件:
subject='/c=us/ST=California/l=mountain view/o=Android/ou=Android/cn=Android/email address=Android
mkdir ~/.android-certs
forxinreleasekeyplatformsharedmedia; do () )。
./development/tools/make _ key~~/. Android-certs/$ x ' $ subject '; \
道恩
注:
生成使用项目的./development/tools/make_key脚本,依次生成
subject参数的含义:
c----计数名称(2letter代码) )。
ST---- stateorprovincename (完整名称) )。
L----localityname(EG,city ) ) )。
o----组织名称(eg,company ) )。
Ou----逻辑单元名称(Eg,section ) )。
cn----公共名称(eg,your name or your server's hostname ) )。
电子邮件地址--- -联系人电子邮件地址
生成签名文件的过程通常按回车。 输入密码后,必须手动输入才能签署apk。
显示签名apk的签名信息
ky tool-printcert-jarfile XXX.apk
使用此命令可以查看有关apk使用的签名的信息,如下图所示
使用系统签名文件直接签名apk
Java-DJ ava.library.path=.-jarsignapk.jar XXX.x509.PEM XXX.pk8 before sign.apkaftersign.apk
如下例所示,
用releasekey签名app-debug.apk,签名后的apk名称为app-debug_release.apk。
请注意传球。 例如,signapk.jar路径位于out/host/Linux-x86/framework/sign apk.jar中,可以进行复制。 已经讨论了平台签名文件的路径。 如果有误报,注意提示并调整即可。
Java-DJ ava.library.path=.-jarsignapk.jarreleasekey.x509.pemreleasekey.pk8 app-debug.apk app-debug _ rebu red