本文主要介绍了在Android系统中制作自定义签名的例子,具有很好的参考价值。希望对大家有帮助。来和边肖一起看看吧。
1、简介
在客户的要求下,为了让特别定制的系统更加安全,系统ROM需要使用自己定义的签名,也有一些特殊场景会改变系统签名。比如cts认证测试通过时也会修改平台签名,从而通过测试。
这是因为平台默认使用测试签名。大部分网络签名都是app签名而不是平台签名。
Test这种类型的密钥只适用于开发阶段,而且这个密钥是公开的,任何人都可以使用。
当你发布一款安卓产品的时候,你需要为整个系统再签一个名字,防止被别人盗用。该系统是Android系统的发布版本。
这里简单记录一下方法吧。
2、制作自己的平台release签名
要对Android系统进行签名,需要生成四种类型的密钥文件。
a)释放键
b)媒体
c)共享
d)平台
下面以platform为例简单介绍一下生成过程。
1)进入/Android源码根目录/development/tools目录。
2)使用make_key工具生成签名文件。
开发/工具$ sh make_key平台
/C=CN/ST=山西/L=西安/O=公司/OU=部门/CN=banfeipeng/email address=23333869 @ QQ . com '
输入“共享”的密码(空白表示无;密码将是可见的):我的密码3354-设置您的密码。
创建没有密码的shared.pk8
生成RSA私钥,2048位长模数
…………………………………… .
………………
e是65537 (0x10001)
3)3)make _ key的参数介绍
这里顺便介绍一下make_key的参数。第一个参数是要生成的密钥的名称,第二个参数是关于您的公司的信息。
key的名字很好理解,就是前面说的四类key。公司信息有很多参数,其含义如下:
C —国家名称(2个字母的代码)
ST —州或省名(全名)
L —地点名称(例如,城市)
O —组织名称(如公司)
OU —组织单位名称(例如,部分)
CN —通用名称(例如,您的姓名或服务器的主机名)
电子邮件地址—联系人电子邮件地址
4)生成的结果如下:
5)pk8是生成的私钥,而*.x509.pem是公钥,生成时它们成对出现。
3、修改android平台签名为刚才修改的签名文件
1.修改build/core/config.mk将:
ifdef产品_默认_开发_证书
默认系统开发证书:=$(产品默认开发证书)
其他
DEFAULT _ SYSTEM _ DEV _ CERTIFICATE:=内部版本/目标/产品/安全/测试密钥
endif
修改为:
ifdef产品_默认_开发_证书
默认系统开发证书:=$(产品默认开发证书)
其他
DEFAULT _ SYSTEM _ DEV _ CERTIFICATE:=build/target/product/security/XXXreleasekey
endif
2.将上面生成的签名文件放在build/target/product/security/XXX/目录中。
3.修改外部/sepolicy/keys.conf。
补充知识:test.pk8 和 test.x509.pem转换为 android studio 使用的 keystore 文件
我就不说废话了。让我们只看代码!
set in _ pk8=' F:\ chNet \ sign _ mstar 9380 \ testkey . pk8 '
set in _ x509 _ PEM=' F:\ chNet \ sign _ mstar 9380 \ testkey . x509 . PEM '
set out _ name=out . keystore . testkey
set out_alias='mstar '
设置存储密码=12345678
设置密钥密码=12345678
设置tmp_file1=platform.p12
set tmp_file2=testkey.pem
set OpenSSL=' D:\ Program Files \ Git \ usr \ bin \ OpenSSL . exe '
set keytool=' C:\ Program Files \ Java \ JRE 1 . 8 . 0 _ 191 \ bin \ keytool . exe '
*使用开放ssl将pk8解密成pem文件,然后生成testkey.pem文件。
% OpenSSL % pkcs 8-通知DER-no crypt-in % in _ PK 8%-out % tmp _ file 2%
*将两个pem文件导入platform.p12文件,
设置别名testkey和keypass密码:12345678(别名和密码可以自定义),生成新的platform.p12。
% OpenSSL % pkcs12-export-in % in _ x509 _ PEM %-inkey % tmp _ file 2%-out % tmp _ file 1%-密码传递:%keyPassword% -name %out_alias%
*使用keytool将之前生成的platform.p12导入testkey.jks签名,并设置storepass密码(12345678)
*必须正确提供keypass密码。
*此时会生成所需的testkey.jks签名文件。
% keytool %-import keystore-deststorepass % store password %-destkeystore % out _ name %-srckeystore % tmp _ file 1%-srcstoretype PKCS12-srcstorepass % key password %
*删除临时文件
del %tmp_file1%
del %tmp_file2%
*查看生成的签名信息
% keytool %-list-v-keystore % out _ name %
中止
上面这个在Android系统中制作自定义签名的例子就是边肖分享的所有内容。希望能给你一个参考,多多支持我们。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。