Android 安全模型

[color=white][b]Android 安全模型包括两个方面:部署和运行.[/b][/color]

[b]部署[/b]应用到设备必须具有一个数字证书.数字证书包括作者签名,公钥,密钥,公司信息,地址等.
你可以生成数字证书通过 keytool 或 认证中心(CA).
签名一个Android应用需要以下三个:
1.一个数字证书
2.一个.apk文件
3.一个apk签名工具(keytool)
部署一个Android应用包括两个步骤:
1.生成证书(keytool)
2.签名应用(jarsigner tool)
模拟器使用的证书是默认的,在实际设备中不可用.因此部署需自己给应用签名.
[b]
[color=white]通过 keytool 生成一个自动签名的证书[/color][/b]
1.创建一个发行目录,用于存放 keystore
比如: c:\android\release
2.打开命令行.运行如下命令
D:\WINDOWS\system32>
keytool -genkeypair -v -keystore c:\android\release\release.keystore
-alias androidbook -storepass 123456 -keypass 123456 -keyalg RSA
-validity 14000

[quote]
D:\WINDOWS\system32>keytool -genkey -v -keystore c:\android\release\helloworld.k
eystore -alias helloworld -storepass 123456 -keypass 123456 -keyalg RSA -validit
y 14000
您的名字与姓氏是什么?
[Unknown]: w26
您的组织单位名称是什么?
[Unknown]: cs
您的组织名称是什么?
[Unknown]: cs
您所在的城市或区域名称是什么?
[Unknown]: sz
您所在的州或省份名称是什么?
[Unknown]: gd
该单位的两字母国家代码是什么
[Unknown]: cn
CN=w26, OU=cs, O=cs, L=sz, ST=gd, C=cn 正确吗?
[否]: y

正在为以下对象生成 1,024 位 RSA 密钥对和自签名证书 (SHA1withRSA)(有效期为 14,00
0 天):
CN=w26, OU=cs, O=cs, L=sz, ST=gd, C=cn
[正在存储 c:\android\release\helloworld.keystore]

[/quote]

参数说明:
-genkey 生成公钥/密钥对
-v 生成详细信息
-keystore 密钥库
-alias 密钥库条目惟一别名
-storepass 密钥库密码
-keypass 公钥/密钥对密码
-keyalg 加密算法
-validity 有效期(天)
如果你要在google market 发布应用,证书最好大于25年.


[color=white][b]使用 jarsigner tool 签名.apk 文件[/b][/color]

1.使用eclipse adt 生成一个未签名的包.Export Unsigned Application Package.把 生成的 .apk 文件保存到 c:\android\release\*.apk
2.使用命令行,运行如下命令:
[quote]
D:\WINDOWS\system32>
jarsigner -keystore c:\android\release\helloworld.keystore
-storepass 123456
-keypass 123456 c:\android\release\calc.apk helloworld

D:\WINDOWS\system32>
[/quote]

如果你想更新应用,需要相同的签名.不同的签名,android认为是另外一个应用.
如果应用安装过期,应用仍会运行,android只在安装时验证证书,并分配第个应用一个惟一的UID.当应用过期时,应用不能再更新升级.

3.使用 zipalign 优化资源



[b]运行[/b]应用具有一个UID,android根据uid管理进程间的数据访问.android使用权限管理各种资源.

[color=white][b]声明与使用权限[/b][/color]
如果应用要使用受保护的资源,需要请求相应的权限.用户可以在manifest 文件中配置相关权限,android安装时检查,并同意/禁止相关权限.
完整权限列表,请查看:
[url]http://developer.android.com/reference/android/Manifest.permission.html[/url]

[color=white][b]自定义权限[/b][/color]
你可以为android 各种组件定义权限.

你可能感兴趣的:(Android)