把Android源码中的密码对转换为keystore的方法
来源:互联网 发布:马克斯cms采集规则 编辑:程序博客网 时间:2024/05/22 10:27
一、前言goolge为我们提供了4个标准的key,以签名测试程序:
testkey -- a generic key for packages that do not otherwise specify a key.platform -- a test key for packages that are part of the core platform.shared -- a test key for things that are shared in the home/contacts process.media -- a test key for packages that are part of the media/download system.它们位于Android源码的以下目录 android\build\target\product\security注意,这些key只是用于工程版的Android系统.在编译时android源码时,使用eng选项即表示编译生成工程版的Android系统,而使用user选项时表示编译用户版(即正式版)的Android系统。二、使用key生成keystore文件使用google的标准key生成keystore文件。我们需要2个工具,openssl (cryptography and SSL/TLS toolkit) and keytool。openssl是Linux上的一个工具,keytool则是JDK的一个工具,它位于JDK\bin目录。在此假设你已经把JDK\bin添加到了window的path环境变量中。因为一般用户使用的是window系统,所以我这里把Cygwin安装在window上来模拟Linux环境,在Cygwin上使用opnssl.关于Cygwi的详细内容请参考《cygwin安装详解》。2.1、命令行方式在这里我将以platform为例进行讲解。通过“Cygwin Terminal”的进入Cygwin的命令行,然后切换到key所在的目录。即security目录.输入以下命令:openssl pkcs8 -inform DER -nocrypt -in platform.pk8 -out platform.pem执行该命令,将在目录下生成platform.pem文件接着输入以下命令:openssl pkcs12 -export -in platform.x509.pem -out platform.p12 -inkey platform.pem -password pass:android -name androiddebugkey执行该命令,将在目录下生成platform.p12文件,它本质上应该就是一个数字证书。进入DOS命令行,切换到key所在的目录。即security然后输入命令:keytool -importkeystore -deststorepass android -destkeystore ./platform.jks -srckeystore ./platform.p12 -srcstoretype PKCS12 -srcstorepassandroid执行该命令,将在目录下生成platform.jks文件,它就是我们需要的keystore文件。它的后缀本身是没有关系。如果你更喜欢其后缀名为keystore。上面的命令改成这样就行了。keytool -importkeystore -deststorepass android -destkeystore ./platform.keystore -srckeystore ./platform.p12 -srcstoretype PKCS12 -srcstorepass android另外,我方便我们可以使用批处理来进行处理。通过“Cygwin Terminal”的进入Cygwin的命令行,然后切换到key所在的目录。即security目录.使用sh ./export.sh命令运行export.sh文件.export.sh文件如下:#!/bin/sh
FILES=`find . -name "*.pk8"`cat > generateKeystore.bat << ENDrem autogenerated fileEND
for FILE in $FILES doFILE_NAME=`echo $FILE | awk -F.pk8 '{print $1}'`if [ -f ${FILE_NAME}.pem ] then echo "file ${FILE_NAME}.pem exists"else`openssl pkcs8 -inform DER -nocrypt -in ${FILE} -out ${FILE_NAME}.pem`fi
`openssl pkcs12 -export -in ${FILE_NAME}.x509.pem -out ${FILE_NAME}.p12 -inkey ${FILE_NAME}.pem -password pass:android -name androiddebugkey`cat >> generateKeystore.bat << ENDkeytool -importkeystore -deststorepass android -destkeystore ${FILE_NAME}.jks -srckeystore ${FILE_NAME}.p12 -srcstoretype PKCS12 -srcstorepass androidEND
done在运行完成后,将在当前目录看到若干*pem文件,*.p12文件及一个generateKeystore.bat文件,window中直接双击运行它。这时你将看到生成的*.jks文件,它们就是我们需要得keystore文件。generateKeystore.bat文件如下:rem autogenerated filekeytool -importkeystore -deststorepass android -destkeystore ./media.jks -srckeystore ./media.p12 -srcstoretype PKCS12 -srcstorepass androidkeytool -importkeystore -deststorepass android -destkeystore ./platform.jks -srckeystore ./platform.p12 -srcstoretype PKCS12 -srcstorepass androidkeytool -importkeystore -deststorepass android -destkeystore ./shared.jks -srckeystore ./shared.p12 -srcstoretype PKCS12 -srcstorepass androidkeytool -importkeystore -deststorepass android -destkeystore ./testkey.jks -srckeystore ./testkey.p12 -srcstoretype PKCS12 -srcstorepass android2.2、Keytool-IUI界面化方式。Keytool-IUI is Cryptography GUI 工具. It allows create, manage keys and certificates, encrypt and decrypt files.可以在这里下载它http://code.google.com/p/keytool-iui/downloads/detail?name=ktl241sta.jar&can=2&q=在使用Keytool-IUI前,我们还是需要使用opensll来先生成.pem文件。在这里我将以platform为例进行讲解。第一步、通过“Cygwin Terminal”的进入Cygwin的命令行,然后切换到key所在的目录。即security目录.输入以下命令:openssl pkcs8 -inform DER -nocrypt -in platform.pk8 -out platform.pem执行该命令,将在目录下生成platform.pem文件第二步、双击keytool解压目录下的run_ktl.bat来启动Keytool IUI。进入Keytool IUI -> Create -> Keystore界面, 设置keystore文件的名字及存储路径, 并把它的密码设置为"android"。如图1: 然后点击"ok"按钮第三步、进入Keytool IUI -> Import-> Keystore’s entry -> Private key -> PEM file format界面选择在第一步生成的Private key文件: platform.pem选择Certificates chain file: platform.x509.pem的路径设置输出Keystore文件的路径,并设置其密码为android。如图2 然后点击"ok"按钮第四步、把的key在keystore中的别名设置为androiddebugkey,且密码设置为android。如图3 然后点击"ok"按钮,弹出成功导出keystore文件的对象框。点击对话框的"ok"按钮。这时出现keysore文件列表的界面 。如图4: 另外你可以通过View keystores来进入该界面。选中一个key项目,通过右键的"view Cerificate chain",可以看到key的指纹等详细信息。如图5
点击"close"按钮结束。三、在eclipse中使用keystore可以在eclipse的preferences设置你的要使用的keystore文件。如图6 四、命令行中使用keystore对APK签名关于此请参考《APK签名》五、查看APK使用的数字签名解压APK文件,对其META-INF目录下的CERT.RSA文件,执行以下命令就可以到它的数字签名的详细情况keytool -printcert -file CERT.RSA另外在Android源码,可以通过应用程序Android.mk文件的LOCAL_CERTIFICATE查看它使用的哪种key。比如:LOCAL_CERTIFICATE := platform
testkey -- a generic key for packages that do not otherwise specify a key.
platform -- a test key for packages that are part of the core platform.
shared -- a test key for things that are shared in the home/contacts process.
media -- a test key for packages that are part of the media/download system.
它们位于Android源码的以下目录#!/bin/sh
FILES=`find . -name "*.pk8"`
cat > generateKeystore.bat << END
rem autogenerated file
END
for FILE in $FILES
do
FILE_NAME=`echo $FILE | awk -F.pk8 '{print $1}'`
if [ -f ${FILE_NAME}.pem ]
then
echo "file ${FILE_NAME}.pem exists"
else
`openssl pkcs8 -inform DER -nocrypt -in ${FILE} -out ${FILE_NAME}.pem`
fi
`openssl pkcs12 -export -in ${FILE_NAME}.x509.pem -out ${FILE_NAME}.p12 -inkey ${FILE_NAME}.pem -password pass:android -name androiddebugkey`
cat >> generateKeystore.bat << END
keytool -importkeystore -deststorepass android -destkeystore ${FILE_NAME}.jks -srckeystore ${FILE_NAME}.p12 -srcstoretype PKCS12 -srcstorepass android
END
done
rem autogenerated file
keytool -importkeystore -deststorepass android -destkeystore ./media.jks -srckeystore ./media.p12 -srcstoretype PKCS12 -srcstorepass android
keytool -importkeystore -deststorepass android -destkeystore ./platform.jks -srckeystore ./platform.p12 -srcstoretype PKCS12 -srcstorepass android
keytool -importkeystore -deststorepass android -destkeystore ./shared.jks -srckeystore ./shared.p12 -srcstoretype PKCS12 -srcstorepass android
keytool -importkeystore -deststorepass android -destkeystore ./testkey.jks -srckeystore ./testkey.p12 -srcstoretype PKCS12 -srcstorepass android
Keytool-IUI is Cryptography GUI 工具. It allows create, manage keys and certificates, encrypt and decrypt files.
可以在这里下载它http://code.google.com/p/keytool-iui/downloads/detail?name=ktl241sta.jar&can=2&q=
第一步、通过“Cygwin Terminal”的进入Cygwin的命令行,然后切换到key所在的目录。即security目录.
输入以下命令:
openssl pkcs8 -inform DER -nocrypt -in platform.pk8 -out platform.pem
执行该命令,将在目录下生成platform.pem文件
0 0
- 把Android源码中的密码对转换为keystore的方法
- 把Android源码中的密码对转换为keystore的方法
- 把Android源码中的密码对转换为keystore的方法
- 把Android源码中的密码对转换为keystore的方法
- 把Android源码中的密码对转换为keystore的方法
- 把Android源码中的密码对转换为keystore的方法
- 把Android源码中的密码对转换为keystore的方法
- Android源码中的密码对转换为keystore
- 将Android源码中的公私钥对转换为keystore的方法
- Android签名公私密钥对转换为keystore
- Android debug.keystore的密码
- Android debug.keystore的密码
- Android debug.keystore的密码
- Android debug.keystore的密码
- Android debug.keystore的密码
- Android debug.keystore的密码
- Android debug.keystore的密码
- Android debug.keystore的密码
- 二叉树遍历
- Windows自带Android模拟器启动失败
- leetcode(155):Min Stack
- Android学习笔记(文件篇)
- 服务器安全-阿里自研补丁列表整理
- 把Android源码中的密码对转换为keystore的方法
- 解决adb devices 中no permissions问题
- iptables总结脚本
- Android 利用WebViewJavascriptBridge 实现js和java的交互
- CentOS6安装gitlab
- 下载文件,ie,chrome,firfox下处理文件名显示乱码
- Oracle 数据库 字符集修改
- View的源码分析(绘制流程以及刷新机制)
- Hexo在Github中搭建博客系统(4)建菜单写文章