解决方案

Android签名 (二) 制作签名文件

seo靠我 2023-09-23 00:25:46

你可能想知道 通过这篇博客可以解决哪些问题以及学到什么:

  1.公司开发一个新的app,如何创建一个应用签名?

  2.为了安全性,Android系统不想使用Google给的原生签名,如何定制系统签名?

这篇博客介SEO靠我绍了如何制作签名文件,首先介绍Android开发中使用到的签名文件类型,然后介绍系统签名如何制作,最后介绍不同IDE用到的签名文件如何制作。

目录

一、Android的签名文件有三种类型,分别在以下情况使SEO靠我

1.  jks: 用于Android Studio编译

2.  keystore: 用于Eclipse编译

3.  pk8/x509.pem   : 用于Android系统的编译

二、制作pk8/x509SEO靠我.pem格式系统签名文件

1.准备环境

2.制作过程

3.使用自定义签名

4.检查自定义签名 

三、制作jks格式的签名文件

四、制作keystore格式的签名文件

一、Android的签名文件有三种类型,分别在以下SEO靠我情况使用

1.  jks: 用于Android Studio编译

全称为Java key store,jks也是Android Studio中创建签名文件的格式

2.  keystore: 用于EclipsSEO靠我e编译

最早开发Android的时候的签名文件,目前开发Android都使用AS,而AS也兼容keystore.

3.  pk8/x509.pem   : 用于Android系统的编译

这个是系统的签名文件SEO靠我,同样也可以给APK签名

二、制作pk8/x509.pem格式系统签名文件

1.准备环境

需要在linux系统中,且有编译Android源码的环境

2.制作过程

1)生成签名文件

要对Android系统进行签名,SEO靠我需要生成四种类型的key文件:

a) releasekeyb) mediac) sharedd) platform

我们就拿releasekey 为例简单介绍下生成过程

使用Android源码中自带的makSEO靠我e_key工具来生成签名,路径为development/tools/make_key

在Android系统源码根目录下,新建make_key_security目录,进入到该目录,执行下面的命令

../deSEO靠我velopment/tools/make_key releasekey /C=US/ST=California/L=Mountain View/O=Android/OU=Android/CN=AndrSEO靠我oid/emailAddress=android@android.com

执行命令时都会提示输入密码,这时不要输入密码,直接按Enter健;你想想如果在编译Android系统过程中要你不断输入密码进行确SEO靠我认,你是不是会疯掉!!!如下就会在make_key_security目录中生成密钥对 releasekey.pk8 (私钥) / releasekey.x509.pem (公钥)

Jack:~/aospSEO靠我/make_key_security$ ../development/tools/make_key releasekey /C=US/ST=California/L=Mountain View/O=ASEO靠我ndroid/OU=Android/CN=Android/emailAddress=android@android.com Enter password for releasekey SEO靠我(blank for none; password will be visible): creating releasekey.pk8 with no password SEO靠我 Generating RSA private key, 2048 bit long modulus (2 primes) ..............................SEO靠我......................................................................+++++ ....+++++ SEO靠我 e is 65537 (0x010001) Cant load /home/ecarx/.rnd into RNG 139895179936192:error:24SEO靠我06F079:random number generator:RAND_load_file:Cannot open file:../crypto/rand/randfile.c:88:FilenameSEO靠我=/home/ecarx/.rndJack:~/aosp/make_key_security$ ls releasekey.pk8 releasekey.x509.pem

同样步骤将命令SEO靠我中的releasekey换成 media/shared/platform,然后执行,生成的所有秘钥对如下:

Jack:~/aosp/make_key_security$ ls -l 总用SEO靠我量 40 -rw------- 1 ecarx ecarx 1217 8月 14 23:45 media.pk8 -rw-rw-r-- 1 ecarx ecarx 14SEO靠我64 8月 14 23:45 media.x509.pem -rw------- 1 ecarx ecarx 1218 8月 14 23:44 platform.pk8 SEO靠我 -rw-rw-r-- 1 ecarx ecarx 1464 8月 14 23:44 platform.x509.pem -rw------- 1 ecarx ecarx 1218 8SEO靠我月 14 23:30 releasekey.pk8 -rw-rw-r-- 1 ecarx ecarx 1464 8月 14 23:30 releasekey.x509.pem SEO靠我 -rw------- 1 ecarx ecarx 1217 8月 14 23:45 shared.pk8 -rw-rw-r-- 1 ecarx ecarx 1464 8月 14SEO靠我 23:45 shared.x509.pem

2)介绍一下make_key的参数   

../development/tools/make_keyreleasekey /C=US/ST=California/LSEO靠我=Mountain View/O=Android/OU=Android/CN=Android/emailAddress=android@android.com

这里要顺便介绍下make_key的参数。第SEO靠我一个参数是要生成key的名字,第二个参数是关于你公司的信息。key的名字很好理解,就是前面提到的4中类型的key,公司信息的参数比较多,它们的含义如下:

KeyDescriptionExampleCWhSEO靠我at is the two-letter country code for this unit?USSTWhat is the name of your State or Province?CalifSEO靠我orniaLWhat is the name of your City or Locality?Mountain ViewOWhat is the name of your organization?SEO靠我AndroidOUWhat is the name of your organizational unit?AndroidCNWhat is your first and last name?AndrSEO靠我oidemailAddressWhat is the email address?android@android.com

3.使用自定义签名

1) 修改 /build/core/config.mk 中定义SEO靠我变量:

DEFAULT_SYSTEM_DEV_CERTIFICATE := build/target/product/security/releasekey  

2) 修改 /build/core/MakefSEO靠我ile 中定义变量:

ifeq ($(DEFAULT_SYSTEM_DEV_CERTIFICATE),build/target/product/security/releasekey)

BUILD_KEYSEO靠我S := release-keys

else

BUILD_KEYS := dev-keys

endif

4.检查自定义签名 

查看签名文件信息: 

Jackchen:~/aosp/make_key_security$SEO靠我 keytool -printcert -file releasekey.x509.pem  所有者: EMAILADDRESS=android@android.com, CN=AndSEO靠我roid, OU=Android, O=Android, L=Mountain View, ST=California, C=US 发布者: EMAILADDRESS=android@SEO靠我android.com, CN=Android, OU=Android, O=Android, L=Mountain View, ST=California, C=US 序列号: 2cSEO靠我5386028cf9208120dcb735e63e6ce31e57faf7 生效时间: Sat Aug 14 23:30:08 CST 2021, 失效时间: Wed Dec 30 SEO靠我23:30:08 CST 2048 证书指纹:SHA1: 6A:72:69:63:9D:07:13:09:35:9C:22:31:6C:A1:C8:74:CF:FE:F1:8BSHA2SEO靠我56: 45:AF:80:A8:10:AD:80:C2:71:C9:97:8A:D6:CC:FA:D0:AB:69:BA:B3:CE:80:94:D5:D0:70:63:E8:71:B0:06:CE SEO靠我 签名算法名称: SHA256withRSA 主体公共密钥算法: 2048 位 RSA 密钥 版本: 3

build.prop中可以查看到变量:

ro.buiSEO靠我ld.tags=release-keys

三、制作jks格式的签名文件

1.用Android Studio生成签名文件

这个网上教材很多,我引用了两位博主的文章

在Android Studio创建keystoSEO靠我re签名文件_TinkTan的博客-CSDN博客_android studio 创建keystore

Android Studio生成keystore签名文件_安妍妍的博客-CSDN博客_androidSEO靠我 studio 生成签名文件

之前我会一直困惑为什么创建jks签名文件时要输入两套秘密(不是确认秘密哦),后来经过查阅资料和实操验证终于弄懂了,这里和大家分享以下:

你可以将jks理解为一个仓库,一个密钥SEO靠我仓库,其实keystore这个名字就很直观,访问这个仓库需要一个秘密; 这个仓库里面可以存放很多很多key,所以每一个key都需要有一个自己的名字alias,访问每个key都需要密码aliaspassSEO靠我wd,下面通过示意图说明:

 2.从系统签名文件转化而来

1)获取android平台key

取源码目录build\target\product\security下platform.pk8 platform.xSEO靠我509.pem放到一个目录中

2)生成platform.pem 

   openssl pkcs8 -inform DER -nocrypt -in platform.pk8 -out platform.pem

3SEO靠我)生成pkcs12

openssl pkcs12 -export -in  platform.x509.pem -inkey platform.pem -out platform.p12  -passwSEO靠我ord pass:<key_pwd> -name <key_alias>

  签名key的密码,下一步需要用到(对应pkcs12的密码)

<key_alias> 签名key的别名,下一步需要用到

4)生成debSEO靠我ug.jks

keytool -importkeystore -deststorepass <store_pwd> -destkeystore <store_name> -srckeystore plaSEO靠我tform.p12 -srcstoretype PKCS12 -srcstorepass <key_pwd> -alias <key_alias>

         签名文件(jks/keystore)的密码;

签名文件(SEO靠我jks/keystore)名称;

            签名key的密码;

           签名key的别名;

以上步骤就生成了platform.jks就直接可以用于Android Studio签名了,用到的命令如下:openssl pkcs8SEO靠我 -inform DER -nocrypt -in platform.pk8 -out platform.pem openssl pkcs12 -export -in platformSEO靠我.x509.pem -inkey platform.pem -out platform.p12 -password pass:key_password -name key_alias SEO靠我keytool -importkeystore -deststorepass store_name -destkeystore debug.jks -srckeystore platform.p12 SEO靠我-srcstoretype PKCS12 -srcstorepass key_password -alias key_alias

另外还将以上这些命令写成了一个脚本,只要将platform.pk8 plSEO靠我atform.x509.pem放到对应目录下,然后运行脚本,输入对应参数即可,下载连接

四、制作keystore格式的签名文件

1.从系统签名文件转化而来

    和制作jks的步骤相同

如果要查看生成的签名文件里面SEO靠我的签名信息,可以参考我的另外一篇博客

Android签名 (一) 查看签名信息

“SEO靠我”的新闻页面文章、图片、音频、视频等稿件均为自媒体人、第三方机构发布或转载。如稿件涉及版权等问题,请与 我们联系删除或处理,客服邮箱:html5sh@163.com,稿件内容仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同 其观点或证实其内容的真实性。

网站备案号:浙ICP备17034767号-2