签名需要的工具:
1. openssl
2. keytool
SELinux(或SEAndroid)将app划分为主要三种类型(根据user不同,也有其他的domain类型):
1. untrusted_app 第三方app,没有android平台签名,没有system权限
2. platform_app 有android平台签名,没有system权限
3. system_app 有android平台签名和system权限
从上面划分,权限等级,
理论上:
untrusted_app < platform_app < system_app
2、AndroidManifest.xml 有android:sharedUserId="android.uid.system"
untrusted_app 没有1和2
platform_app 有1
system_app 有1和2
.\build\target\product\security\
此文件夹下面有4个标准的key。
testkey – a generic key for packages that do not otherwise specify a key.
platform – a test key for packages that are part of the core platform.
shared – a test key for things that are shared in the home/contacts process.
media – a test key for packages that are part of the media/download system.
注:我们需要制作的keystore需要用到platform的key。
直接签名和制作keystore都是需要使用platform.x509.pem和platform.pk8这两个文件。
out/host/linux-x86/framework/signapk.jar
app_signed.apk为经过系统签名的apk了。
1. 生成platform.pem
openssl pkcs8 -inform DER -nocrypt -in platform.pk8 -out platform.pem
2. 生成platform.pk12,密码android,名称anlory
openssl pkcs12 -export -in platform.x509.pem -out platform.p12 -inkey platform.pem -password pass:android -name anlory
3. 生成anlory.keystore文件, srcstorepass android
keytool -importkeystore -deststorepass android -destkeystore ./anlory.keystore -srckeystore ./platform.p12 -srcstoretype PKCS12 -srcstorepass android -alias anlory
注意:有的生成的为platform.jks,可以直接改为.keystore后缀,不影响使用的。
1. openssl
2. keytool
SELinux(或SEAndroid)将app划分为主要三种类型(根据user不同,也有其他的domain类型):
1. untrusted_app 第三方app,没有android平台签名,没有system权限
2. platform_app 有android平台签名,没有system权限
3. system_app 有android平台签名和system权限
从上面划分,权限等级,
理论上:
untrusted_app < platform_app < system_app
三种类型的标识
1、Android.mk 中有LOCAL_CERTIFICATE := platform2、AndroidManifest.xml 有android:sharedUserId="android.uid.system"
untrusted_app 没有1和2
platform_app 有1
system_app 有1和2
系统签名keys的位置
.\build\target\product\security\
此文件夹下面有4个标准的key。
testkey – a generic key for packages that do not otherwise specify a key.
platform – a test key for packages that are part of the core platform.
shared – a test key for things that are shared in the home/contacts process.
media – a test key for packages that are part of the media/download system.
注:我们需要制作的keystore需要用到platform的key。
直接签名和制作keystore都是需要使用platform.x509.pem和platform.pk8这两个文件。
直接给应用签名
直接签名还需要一个signapk.jar文件,此文件位置在out/host/linux-x86/framework/signapk.jar
在利用上面文件签名,命令如下:
java -jar signapk.jar platform.x509.pem platform.pk8 app.apk app_signed.apk
app_signed.apk为经过系统签名的apk了。
将 platform.pk8 和 platform.x509.pem 格式的系统签名转换为 xxx.keystore 格式
使用上面两个文件来生成keysotre。按照如下步骤进行生成:1. 生成platform.pem
openssl pkcs8 -inform DER -nocrypt -in platform.pk8 -out platform.pem
2. 生成platform.pk12,密码android,名称anlory
openssl pkcs12 -export -in platform.x509.pem -out platform.p12 -inkey platform.pem -password pass:android -name anlory
3. 生成anlory.keystore文件, srcstorepass android
keytool -importkeystore -deststorepass android -destkeystore ./anlory.keystore -srckeystore ./platform.p12 -srcstoretype PKCS12 -srcstorepass android -alias anlory
注意:有的生成的为platform.jks,可以直接改为.keystore后缀,不影响使用的。