Android系统制作自定义签名的例子
1、简介
应客户要求为了是特殊定制的系统更具安全,系统ROM需要使用自己定义的签名,还有一些特殊的场景也会更改系统的签名比如在过cts认证测试的时候也会修改平台签名才能测试通过关于签名的问题。
这是因为平台默认的是test签名.网上大多说签名的都是app签名而非平台签名。
test签名这种类型的key只适用于开发阶段,而且这种秘钥是公开的,谁都可以使用。
当发布一款android产品,就需要另外给整个系统签个名,防止被别人盗用。这种系统就是release版本的Android系统。
这里就简单记录下方法。
2、制作自己的平台release签名
要对Android系统进行签名,需要生成四种类型的key文件。
a) releasekey
b) media
c) shared
d) platform
我们就拿platform 为例简单介绍下生成过程。
1)进入/Android源码根目录/development/tools目录。
2)使用make_key工具生成签名文件
development/tools$ sh make_key platform ‘/C=CN/ST=ShanXi/L=Xi`an/O=Company/OU=Department/CN=banfeipeng/emailAddress=23333869@qq.com’
Enter password for ‘shared’ (blank for none; password will be visible): mypassword <——- 设置你的密码 creating shared.pk8 with no password Generating RSA private key, 2048 bit long modulus ……………………………………..+++ ………………+++ e is 65537 (0x10001)
3)make_key的参数介绍
这里要顺便介绍下make_key的参数。第一个参数是要生成key的名字,第二个参数是关于你公司的信息。
key的名字很好理解,就是前面提到的4中类型的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
4)生成后的结果如下:
5)pk8是生成的私钥,而*.x509.pem是公钥,生成时两者是成对出现的.
3、修改android平台签名为刚才修改的签名文件
1.修改build/core/config.mk将:
ifdef PRODUCT_DEFAULT_DEV_CERTIFICATE DEFAULT_SYSTEM_DEV_CERTIFICATE := $(PRODUCT_DEFAULT_DEV_CERTIFICATE) else DEFAULT_SYSTEM_DEV_CERTIFICATE := build/target/product/security/testkey endif
修改为:
ifdef PRODUCT_DEFAULT_DEV_CERTIFICATE DEFAULT_SYSTEM_DEV_CERTIFICATE := $(PRODUCT_DEFAULT_DEV_CERTIFICATE) else DEFAULT_SYSTEM_DEV_CERTIFICATE := build/target/product/security/XXXreleasekey endif
2.将上面生成的签名文件放到 build/target/product/security/XXX/目录
3.修改external/sepolicy/keys.conf
补充知识:test.pk8 和 test.x509.pem转换为 android studio 使用的 keystore 文件
我就废话不多说了,还是直接看代码吧!
set in_pk8="F:chNetsign_mstar9380testkey.pk8"
set in_x509_pem="F:chNetsign_mstar9380testkey.x509.pem"
set out_name=out.keystore.testkey
set out_alias="mstar"
set storePassword=12345678
set keyPassword=12345678
set tmp_file1=platform.p12
set tmp_file2=testkey.pem
set openssl="D:Program FilesGitusrbinopenssl.exe"
set keytool="C:Program FilesJavajre1.8.0_191binkeytool.exe"
::使用 open ssl 将pk8 解密为 pem 文件, 此时生成一个testkey.pem 文件
%openssl% pkcs8 -inform DER -nocrypt -in %in_pk8% -out %tmp_file2%
::将两个pem 文件导入platform.p12文件中,
::并设置 别名 testkey 和keypass 密码:12345678 (别名和密码可自定义)会新生成 platform.p12
%openssl% pkcs12 -export -in %in_x509_pem% -inkey %tmp_file2% -out %tmp_file1% -password pass:%keyPassword% -name %out_alias%
::使用keytool 将之前生成的platform.p12导入 testkey.jks 签名中,并设置storepass密码(12345678)
::需要正确提供keypass 密码
::此时即生成了需要的testkey.jks 签名文件
%keytool% -importkeystore -deststorepass %storePassword% -destkeystore %out_name% -srckeystore %tmp_file1% -srcstoretype PKCS12 -srcstorepass %keyPassword%
::删除临时文件
del %tmp_file1%
del %tmp_file2%
::查看生成的 签名信息
%keytool% -list -v -keystore %out_name%
pause
以上这篇Android系统制作自定义签名的例子就是小编分享给大家的全部内容了,希望能给大家一个参考。
- springmvc框架开发常用的注解总结
- 详谈Struts2
- 持久层框架之MyBatis
- 总结hibernate框架的常用检索方式
- 互联网项目架构之基于服务的分布式架构
- 会优化,你真的会优化吗?其实你可能真的缺少一份理解【数据库篇】
- 用户登录安全框架shiro—用户的认证和授权(一)
- 第一道防线__SpringMVC配置拦截器
- Web层框架对网站中所有异常的统一处理
- Spring MVC__自定义日期类型转换器
- 解决在控制层springmvc框架发出的400状态的错误
- 解决springmvc在单纯返回一个字符串对象时所出现的乱码情况(极速版)
- MySQL日志文件之错误日志和慢查询日志详解
- 采用HTML5之"data-"机制自由提供数据
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- Android 高仿微信朋友圈拍照上传功能
- android的ListView点击item使item展开的做法的实现代码
- Android NavigationView头部设置监听事件
- android如何取得本地通讯录的头像的原图的实现代码
- 取消Android Studio项目与SVN关联的方法
- Android编程实现获取当前系统语言及地区并更改语言的方法
- Android Studio绑定下拉框数据详解
- python中的socket实现ftp客户端和服务器收发文件及md5加密文件
- Android XRecyclerView实现多条目加载
- python3安装OCR识别库tesserocr过程图解
- Android studio 3.0上进行多渠道打包遇到的问题小结(超简洁版)
- Python自动重新加载模块详解(autoreload module)
- python自动脚本的pyautogui入门学习
- Android手机号码输入框(满11位自动跳到下个输入框)实例代码
- Android实现简单实用的搜索框