安装包签名
apk是安卓应用软件包,apk签名是软件包在安装的时候进行的安全性验证机制。
- 这种签名机制目的是为了确保Apk来源的真实性,以及Apk没有被第三方篡改。开发者通过对Apk进行签名:在Apk中写入一个“指纹”。指纹写入以后,Apk中有任何修改,都会导致这个指纹无效,Android系统在安装Apk进行签名校验时就会不通过,从而保证了安全性。
摘录百度百科
签名规范
- 客户端使用APP从属方证书进行签名后进行发布,Android应用程序想要安装运行,必须经过签名,所以开发者在发布安装包时,必须对安装包进行签名。签名信息中包含的组织信息,将便于用户识别安装包的真伪。
存在:未签名或签名无效,缺少V2签名,使用Debug证书、使用个人证书/开发方证书签名,存在未受签名保护的文件
,均认为风险。
检测方法
- 使用
apksigner.bat
工具检测 apksigner.bat
是android-sdk
里的一个工具,需要下载Android SDK Tools——启动SDK Manager——安装Android SDKBuild-tools
- 启动路径:
android-sdk-windows\build-tools\版本号\apksigner.bat
- 命令:
apksigner.bat verify -v --print-certs test.apk
风险分析
- 常见的存在风险情况如下:
未签名或签名无效:
查看输出是否出现Does not verify
或者无签名信息。缺少V2签名:
查看Verified using v2为false。使用debug证书签名:
Signer #1 certificate DN:字段中含有debug。使用个人证书/开发方证书签名
:Signer #1 certificate DN: CN=****为个人或开发商存在为受签名保护的文件:
显示WARNING: META-INF字段
补充:数字证书中主题(Subject)中字段的含义
- 一般的数字证书产品的主题通常含有如下字段:
公用名称 (Common Name) 简称:
CN 字段,对于 SSL 证书,一般为网站域名或IP地址;而对于代码签名证书则为申请单位名称;而对于客户端证书则为证书申请者的姓名;
单位名称 (Organization Name) :
简称:O 字段,对于 SSL 证书,一般为网站域名;而对于代码签名证书则为申请单位名称;而对于客户端单位证书则为证书申请者所在单位名称; - 证书申请单位所在地:
所在城市 (Locality) 简称:
L 字段
所在省份 (State/Provice) 简称:
S 字段
所在国家 (Country) 简称:
C 字段,只能是国家字母缩写,如中国:CN - 其他一些字段:
电子邮件 (Email) 简称:
E 字段
多个姓名字段 简称:
G 字段
介绍:
Description 字段
电话号码:
Phone 字段,格式要求 + 国家区号 城市区号 电话号码,如: +86 520 1314521
地址:
STREET 字段
邮政编码:
PostalCode 字段
显示其他内容 简称:
OU 字段