Android数字签名 android托管进程优先级

1.为什么要签名

1)发送者的身份认证
由于开发商可能通过使用相同的PackageName来混淆替换已经安装的程序,以此保证签名不同的包不被替换

2)保证信息传输的完整性
签名对于包中的每个文件进行处理,以此确保包中内容不被替换

3)防止交易中的抵赖发生,Market对软件的要求

2.签名的说明

1)所有的应用程序都必须有数字证书,Android系统不会安装一个没有数字证书的应用程序

2)Android程序包使用的数字证书可以是自签名的,不需要一个权威的数字证书机构签名认证

3)如果要正式发布一个Android应用,必须使用一个合适的私钥生成的数字证书来给程序签名,而不能使用adt插件或者ant工具生成的调试证书来发布

4)数字证书都是有有效期的,Android只是在应用程序安装的时候才会检查证书的有效期。如果程序已经安装在系统中,即使证书过期也不会影响程序的正常功能

5)签名后需使用zipalign优化程序

6)Android将数字证书用来标识应用程序的作者和在应用程序之间建立信任关系,而不是用来决定最终用户可以安装哪些应用程序

3.签名的方法

1)用eclipse插件方式签名

a)调试签名
eclipse插件默认赋予程序一个DEBUG权限的签名,此签名的程序不能发布到market上,此签名有效期为一年,如果过期则导致你无法生成apk文件,此时你只要删除debugkeystore即可,系统又会为你生成有效期为一年的新签名

b)开发者生成密钥并签名
右键点击项目名,在菜单中选择AndroidTools,然后选择Export Signed ApplicationPackage…,即可通过eclipse自定义证书并签名

c)开发者导出未签名的包
右键点击项目名,在菜单中选择AndroidTools,然后选择Export Signed ApplicationPackage…,即可导出未签名的包,之后可通过命令行方式签名

2)用命令行方式签名
使用标准的java工具keytool和jarsigner来生成证书和给程序签名

a)生成签名
$ keytool -genkey -keystore keyfile-keyalg RSA -validity 10000 -aliasyan
注:validity为天数,keyfile为生成key存放的文件,yan为私钥,RSA为指定的加密算法(可用RSA或DSA)

b)为apk文件签名
$ jarsigner -verbose -keystorekeyfile -signedjar signed.apk base.apkyan
注:keyfile为生成key存放的文件,signed.apk为签名后的apk,base.apk为未签名的apk,yan为私钥

c)看某个apk是否经过了签名
$ jarsigner -verifymy_application.apk

d)优化(签名后需要做对齐优化处理)
$ zipalign -v 4your_project_name-unaligned.apkyour_project_name.apk

3)在源码中编译的签名

a)使用源码中的默认签名
在源码中编译一般都使用默认签名的,在某源码目录中用运行
$ mmshowcommands能看到签名命令
Android提供了签名的程序signapk.jar,用法如下:
$ signapk publickey.x509[.pem]privatekey.pk8 input.jaroutput.jar
*.x509.pem为x509格式公钥,pk8为私钥
build/target/product/security目录中有四组默认签名可选:testkey,platform, shared, media(具体见README.txt),应用程序中Android.mk中有一个LOCAL_CERTIFICATE字段,由它指定用哪个key签名,未指定的默认用testkey.

b)在源码中自签名
Android提供了一个脚本mkkey.sh(build/target/product/security/mkkey.sh),用于生成密钥,生成后在应用程序中通过Android.mk中的LOCAL_CERTIFICATE字段指名用哪个签名

c)mkkey.sh介绍

i.生成公钥
openssl genrsa -3 -out testkey.pem2048
其中-3是算法的参数,2048是密钥长度,testkey.pem是输出的文件

ii.转成x509格式(含作者有效期等)
openssl req -new -x509 -keytestkey.pem -out testkey.x509.pem -days 10000 -subj‘/C=US/ST=California/L=MountainView/O=Android/OU=Android/CN=Android/emailAddress=android@android.com’

iii.生成私钥
openssl pkcs8 -in testkey.pem -topk8-outform DER -out testkey.pk8-nocrypt
把的格式转换成PKCS #8,这里指定了-nocryp,表示不加密,所以签名时不用输入密码

4.签名的相关文件

1)apk包中签名相关的文件在META_INF目录下
CERT.SF:生成每个文件相对的密钥
MANIFEST.MF:数字签名信息
xxx.SF:这是JAR文件的签名文件,占位符xxx标识了签名者
xxx.DSA:对输出文件的签名和公钥

2)相关源码
development/tools/jarutils/src/com.anroid.jarutils/SignedJarBuilder.java
frameworks/base/services/java/com/android/server/PackageManagerService.java
frameworks/base/core/java/android/content/pm/PackageManager.java
frameworks/base/cmds/pm/src/com/android/commands/pm/Pm.java
dalvik/libcore/security/src/main/java/java/security/Sign*
build/target/product/security/platform.*
build/tools/signapk/*

5.签名的相关问题
一般在安装时提示出错:INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES

1)两个应用,名字相同,签名不同

2)升级时前一版本签名,后一版本没签名

3)升级时前一版本为DEBUG签名,后一个为自定义签名

4)升级时前一版本为Android源码中的签名,后一个为DEBUG签名或自定义签名

5)安装未签名的程序

6)安装升级已过有效期的程序

6.相关工具

1)查看某个x509证书的的有效日期
在SignApk.java中打印出publicKey.getNotAfter()即可

7.参考
http://developer.android.com/guide/publishing/app-signing.html
http://www.pgcw.com.cn/Newsdetail.asp?id=257565010
http://www.eoeandroid.com/thread-23010-1-1.html
http://pepa.javaeye.com/blog/250991

  

爱华网本文地址 » http://www.aihuau.com/a/25101015/283332.html

更多阅读

Applet数字签名 数字签名

我用applet做了一个文件的上传和下载在本机和内网服务器上和xp上好使,把代码打到windows2003上win7系统文件的上传和下载就不好使报一下错误:这个问题让我很头疼,我在网上找了很多关于java安全策略的资料,大致都是拿来主义,在java jre

如何安装财付通数字证书 精 win10 财付通数字证书

如何安装财付通数字证书 精——简介财付通数字证书相当于网上的身份证,它以数字签名的方式通过第三方权威认证有效地进行网上身份认证,帮助各个实体识别对方身份和表明自身的身份,具有真实性和防抵赖功能。与物理身份证不同的是,数字证

为Excel宏添加数字签名 pdf添加数字签名

第一篇是微软的,《为宏项目进行数字签名》(http://office.microsoft.com/zh-cn/excel/HA012317812052.aspx);第二篇是《Excel2000的数字签名功能》(http://yqdown.com/info/6725.htm),转载的,据称出自赛迪网-中国计算机报。具体的操作步骤还

Excel数字签名 数字签名软件

为什么要数字签名?无纸化办公!Excel和Word在早期版本就有数字签名功能,不过2010版做得更好些,让用户一目了然。下面以Excel2010为例,示范如何给文件添加数字签名行,以及如何签署文件。首先,得将完成的文件保存。在Excel选项卡“插入”中

Nero8 使用教程 nero 10使用教程

Nero8的常用功能:下图是Nero8的启动界面:1)翻录和刻录:支持光盘和HD DVD等下一代格式的最佳刻录解决方案。您可以复制无复制保护的 CD 和 DVD,也可以将数据或音频文件刻录到 CD、DVD、Blu-ray 光盘和 HD DVD 上。使用集成的 SecurDisc?

声明:《Android数字签名 android托管进程优先级》为网友只做的女人分享!如侵犯到您的合法权益请联系我们删除