博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Android】如何创建自己的证书文件,如何为apk以及zip文件签名 openssl
阅读量:4709 次
发布时间:2019-06-10

本文共 1499 字,大约阅读时间需要 4 分钟。

如果你只是想知道如何签名及下载签名工具,请直接看“如何使用SignApk.jar来为一个apk或zip文件签名”部分。要创建自己的证书请从头看起。

准备知识:
    当你要发布一个软件或是自制的ROM时,你就需要一个使用了私钥的证书来为.apk或.zip文件进行签名。Android系统使用证书来识别软件作者和软件之间所建立的认证关系。做这个事情最经典的方式就是用keytool创建证书,然后使用jarsigner进行签名。但是本教程则会提供一个对于大多数人来说更为容易的方法,那就是使用一个名为SignApk.jar的工具。
    SignApk.jar是一个已包含在Android平台源码包中的工具,你可以在本贴的附件中下载。如果要使用SignApk.jar,你需要创建一个带有对应证书/公钥的私钥。而你可以使用来创建私钥/公钥对。在Unix/Linux系统中使用Openssl相对来说比较容易。对于Windows用户,你可以在本贴附件或中下载Windows版本的Openssl。
如何使用OpenSSL创建私钥/公钥对(也就通常说的证书文件,有误勿怪)(Windows版本)

  • 下载附件中的openssl-0.9.8k_WIN32.zip
  • 将下载到的压缩包解压到你电脑上的任意位置(例如:C:\OpenSSL)
  • 在OpenSSL\bin文件夹下按顺序输入(使用CMD命令行工具,其中第2步会需要你输入一些信息,见图):
    1、openssl genrsa -out key.pem 10242、openssl req -new -key key.pem -config C:\OpenSSL\openssl.cnf -out request.pem3、openssl x509 -req -days 9999 -in request.pem -signkey key.pem -out certificate.pem4、openssl pkcs8 -topk8 -outform DER -in key.pem -inform PEM -out key.pk8 -nocrypt

大星星提示:如果你的recovery不具备签名校验切换功能,那么用你自己生成的证书文件来给ROM签名,会提示签名校验失败。因为目前几乎所有的第三方recovery中所带的私钥都是testkey的。(附件中的android.zip里面所包含的证书文件已更新为testkey)
如何使用SignApk.jar来为一个apk或zip文件签名:

  • 下载附件中的android.zip
  • 将下载到的压缩包解压到你电脑上的任意位置(例如:C:\android)
  • 如果你的电脑上还没有安装JAVA环境,请下载并进行安装。
  • (如果你创建了自己的私钥/公钥对)复制certificate.pem和key.pk8到你解压得到的android文件夹中
  • 使用CMD命令行工具cd到android文件夹,然后输入:(对于我提供的包,只需要将要签名的文件放在android文件夹中,然后拖至对应的批处理文件上即可)
    java -jar signapk.jar certificate.pem key.pk8 your-app.apk  your-signed-app.apk
    或是
    java -jar signapk.jar certificate.pem key.pk8 your-update.zip your-signed-update.zip

转自:

转载于:https://www.cnblogs.com/4evercai/p/3492482.html

你可能感兴趣的文章
java安装1.8和1.7,报错:Error: Registry key 'Software\JavaSoft\Java Runtime Environment'\CurrentVers...
查看>>
iOS多线程编程之NSOperation和NSOperationQueue的使用(转自容芳志专栏)
查看>>
svn不能添加.a文件的解决方法
查看>>
图示/白话 execve执行流程
查看>>
在Ubuntu1.4下升级php和Yii2
查看>>
Jquery面试题整合
查看>>
java基础知识----IO篇
查看>>
【solr基础教程之二】索引
查看>>
HDOJ 4252 A Famous City 单调栈
查看>>
通用运动3
查看>>
ImageMagick的安装及使用
查看>>
OpenCV 编程简单介绍(矩阵/图像/视频的基本读写操作)
查看>>
老程序员的10个忠告(转)
查看>>
python之re模块
查看>>
临界区,互斥量,信号量,事件的区别
查看>>
Pubwin服务端重装(安装)教程
查看>>
NFS 数据共享工具
查看>>
C++ 函数参数的默认值
查看>>
python处理excel之openpyxl库
查看>>
jquery如何通过name名称获取当前name的value值
查看>>