签名证书是一个应用的所有者信息描述和身份标记。
Android应用打包,必须配一个签名证书才能打包。
HBuilder|HBuilderX中开发完成发布为原生App提交云端打包时,Android平台需要选择签名证书:
Android的应用安全管理模型,包括包名、证书、应用市场的账户。
包名是公开的,任何人都可以做一个apk包,包名和你的应用包名相同。那么如何防止仿冒包?
- 他人没有你的应用市场账户,就无法在市场发布仿冒包。
- 他人没有你的签名证书。不过这一点,现实中有很多问题,手机用户是没有识别能力的。大多数安卓手机上也无法查看应用的签名信息。
制作自有证书并打包
开发者如果已经有自己的安卓证书,可直接使用。
如果没有,使用JDK的keytool工具生成一个,不像Apple证书那样收费,制作Android证书没有费用。
完整教程参考Android平台签名证书(.keystore)生成指南
注意以下问题:
- 证书文件密码(storepass)和证书密码(keypass)必须一致,HBuilder|HBuilderX要求这两个密码一致
- 证书别名使用英文字母或数字(老版本HBuilder不支持使用中文别名)
- 证书名称建议使用英文字母或数字,避免使用中文
生成证书后注意保存,不要泄露。
提交云端打包时,如下图配置:
提交云端打包后,打包机会立即删除的证书,不会保存或泄露证书,请放心使用
使用DCloud公用证书
为了方便开发者评估、测试,或用于一些安全要求不高的场合,DCloud提供了公用证书,免去了开发者制作自有证书的麻烦。
注意证书有一个特点,用A证书打包后,后续新版若改用B证书,会导致升级包无法安装。因为相同包名但签名不同时,Android rom不允许安装新包。所以商用第一版应用发布时,证书一定选择好。
在极端情况下,使用公用证书可能发生应用被被仿冒:
- 你的应用使用了DCloud公共证书,且
- 应用升级下载新版apk,使用了http链接,被劫持,替换为新包;或手机usb链接到非安全电脑,并允许了该电脑给手机安装应用,且
- 仿冒的新包包名和你的包相同,证书也相同,版本号大于老包,就会升级成功,将手机上你的应用替换为仿冒应用。那么用户在仿冒应用里填写的用户名密码就会被仿冒者获取。
另,使用DCloud公用证书不影响提交应用市场通过审核。
证书的区别如上,如何选择证书,每位开发者根据自己的需求定夺。
附:DCloud公用证书主要信息:
复制代码Alias name: hbuilder
Creation date: 2014-9-29
Entry type: PrivateKeyEntry Certificate chain length: 1 Certificate[1]: Owner: CN=DH, OU=数字天堂(北京)网络技术有限公司, O=数字天堂(北京)网络技术有限公司, L=海淀, ST=北京, C=86 Issuer: CN=DH, OU=数字天堂(北京)网络技术有限公司, O=数字天堂(北京)网络技术有限公司, L=海淀, ST=北京, C=86 Serial number: 5174dc8b Valid from: Mon Apr 22 14:45:31 CST 2013 until: Sun Aug 23 14:45:31 CST 3012 Certificate fingerprints: MD5: 59:20:1C:F6:58:92:02:CB:2C:DA:B2:67:52:47:21:12 SHA1: BA:AD:09:3A:82:82:9F:B4:32:A7:B2:8C:B4:CC:F0:E9:F3:7D:AE:58 SHA256: D7:5C:1F:A2:B9:AE:86:7C:E6:88:A8:AD:C6:DE:AC:7C:D6:BA:96:F4:3A:75:1F:D1:0A:20:0F:A5:97:4A:C6:36 Signature algorithm name: SHA1withRSA Subject Public Key Algorithm: 1024-bit RSA key