Android APK的签名与重新签名

今年年初的时候,介绍了 BlackBerry系统和签名 从BlackBerry应用程序中移除签名以及重新签名 使用BlackBerry代码签名工具 现在,我们介绍Android APK的签名与重签名的一些要点 APK实际上是一个ZIP压缩文件 解压缩后有个META-INF目录 META-INF目录下存放的是签名信息,用来保证apk包的完整性和系统的安全。 安装apk包时,应用管理器会按照同样的算法对包里的文件做校验,如果校验结果与META-INF下的内容不一致,系统就不会安装这个apk。 每一个Android应用程序必须要有数字签名才能安装. 有两种方法:一种是使用调试密钥(可以在模拟器或者设备上做调试时使用), 还有一种就是私钥(为应用程序发布用).当组建Adriod应用程序时组建工具会自动为应用程序提供签名, 但是如果想发布应用程序的时候,必须使用自己的私钥. 编译时使用Release模式 需要手工添加签名.只有有签名的应用程序才可以安装. 签名工具;来自开源软件 Keytool 创建一个密钥证书存储文件和一个私钥,用来为.apk文件签名 Jarsigner (类似的签名工具) 用Keytool产生的私钥为.apk文件签名 使用Auto-sign工具重新对其进行签名即可,首先,删掉META-INF文件夹下的签名文件 CERT.SF CERT.RSA 从文件名就可以看出 cert.rsa 是 证书的rsa公钥 替换原来apk包中的classes.dex, 在GNOME 的归档管理器 中拖进去即可, windows 资源管理器,其它压缩软件也可支持拖拉. SignApk.jar is a tool included with the Android platform source bundle. testkey.pk8 is the private key that is compatible with the recovery image included in this zip file testkey.x509.pem is the corresponding certificate/public key Usage: java -jar signapk.jar testkey.x509.pem testkey.pk8 update.zip update_signed.zip 在哪里找到这些东西 build/target/product/security目录下面的platform.pk8和platform.x509.pem两个文件 签名工具在 build/tools/signapk/signapk.jar 据说签名时 不必要删除原来的CERT.SF和CERT.RSA, 会自动替换掉的 http://gbs-ben.googlecode.com/files/Auto-sign.rar http://file.geeka.net/Android/tools/Auto-sign.rar 在sun-java6-jdk 中包含有一个签名工具 /usr/lib/jvm/java-6-sun-1.6.0.22/bin/jarsigner 在openjdk-6-jdk 也有一个签名工具 /usr/lib/jvm/java-6-openjdk/bin/jarsigner 验证签名 /usr/lib/jvm/java-6-sun-1.6.0.22/bin/jarsigner -verify /tmp/zhiwei.li.apk /usr/lib/jvm/java-6-sun-1.6.0.22/bin/jarsigner -verbose -certs -verify /tmp/zhiwei.apk 会输出详细的信息(输出详细信息和验证时显示证书) 在 sun-java6-bin 有一个创建数字证书的工具 /usr/lib/jvm/java-6-sun-1.6.0.22/bin/keytool /usr/lib/jvm/java-6-sun-1.6.0.22/jre/bin/keytool openjdk-6-jre-headless /usr/lib/jvm/java-6-openjdk/bin/keytool /usr/lib/jvm/java-6-openjdk/jre/bin/keytool /usr/lib/jvm/java-6-sun-1.6.0.22/bin/keytool -genkeypair -alias zhiwei.keystore -keyalg RSA -validity 11911 -keystore zhiwei.keystore 用 /usr/lib/jvm/java-6-sun-1.6.0.22/bin/jarsigner -verify -verbose -certs 选项可以查看详细的验证信息 比如证书的有效时间, 用keytool生成的证书, 据说有效时间应该在2030年之后才可以在android上运行 调试签名的位置 debug.keystore 默认位置在 ~/.android/目录 Keystore name: “debug.keystore” Keystore password: “android” Key alias: “androiddebugkey” Key password: “android” CN: “CN=Android Debug,O=Android,C=US”

你可能感兴趣的:(windows,android,算法,image,工具,BlackBerry)