当前位置:   article > 正文

Android签名证书的生成_android证书签名生成

android证书签名生成

本节只针对如何从零开始实现简单的打包签名

概要

  • debug.keystore:使用Android Studio直接编译运行时默认使用的签名证书,存放路径C:\Users<你的用户名>.android
  • app-debug.apk:使用Android Studio直接编译时生成的apk文件,生成路径build/outputs/apk/debug/
  • V1(Jar Signature):
  • V2(Full APK Signature):
  • APK文件的校验指令:jarsigner -verbose -certs -verify 签名过的apk文件

Keytool生成JKS签名证书

  • cmd指令生成JKS签名证书:keytool -genkey -v -keystore aso.jks -alias aso -keyalg RSA -validity 9125

在这里插入图片描述
keytool:是一个Java数据证书的管理工具,已经集成在JDK中了,keytool 将密钥(key)和证书(certificates)存在一个keystore的文件中,或者是jks的文件
-genkey:执行的是生成数字证书操作,将在用户目录中创建一个默认.keystore文件或者.jks文件
-v:显示密钥库中的证书详细信息
-keystore aso.jks:生成的证书的文件名为"aso.jks"(自定义的证书名)
-alias aso.jks:证书的别名为"aso.jks"。(一般和上面的证书名名相同,可以不同,但要记好,签名时会用到)
-keyalg RSA:指定生成密钥文件采用的算法为RSA(可以是RSA、DSA,默认是DSA)
-validity 9125:指定证书的有效天数(365*25),时间到期之后证书将失效
-keysize:指定密钥长度
-storepass:指定密钥库的密码(获取keystroe信息所需的密码)
-keypass:指定别名条目的密码(私钥的密码)
dname:证书拥有者的信息。可以不用在命令中注明,会提示你输入(CN=aso, OU=aso, O=aso, L=aso, ST=aso, C=aso
-export:将别名指定的证书导出到文件
-file:指定导出到文件的文件名称
-delete:删除密钥库中的某条目
-printcert:查看导出的信息

  • 完整在指令中写好信息的cmd指令:keytool -genkey -v -keystore C:\Users\Aso\Desktop\jks\aso.jks -alias aso -keyalg RSA -validity 9125 -keypass 111111 -storepass 111111 -keysize 1024 -dname "CN=aso, OU=aso, O=aso, L=aso, ST=aso, C=aso"

在这里插入图片描述

  • cmd指令将JKS迁移到行业标准格式 PKCS12:keytool -importkeystore -srckeystore C:\Users\Aso\Desktop\jks\aso.jks -destkeystore C:\Users\Aso\Desktop\jks\aso.jks -deststoretype pkcs12

在这里插入图片描述

Android Studio生成JKS签名证书

AS版本信息

博主当下使用的AS版本信息

签名证书的生成

Android APP都需要我们用一个证书对应用进行数字签名,不然的话是无法安装到Android手机上的,平时我们调试运行到手机上时,是AS会自动使用默认的密钥和证书来进行签名;但是我们实际用于发布时则需要进行主动签名,那么我们的签名证书是怎么来的?下面图文结合会手把手教你
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
到此,前面文件已经生成在我们指定的目录下了
备注:一个签名文件,是可以被多个APP项目进行签名打包使用的

签名打包

  • 调试运行时的打包
    我们上面有提到使用AS直接编译进行调试运行时,使用的是默认的签名文件进行签名,这时候会在build/outputs/apk/debug/目录下生成一个app-debug.apk,这个就是使用谷歌默认的签名文件进行签名打包的
  • 发布编译时的打包
    当我们已经开发完成之后,要实际放到应用市场上去进行发布时,就需要使用正式签名文件编译Release包,其中可以使用AS的操作界面进行打包,也可以使用Gradle命令进行打包,以下是AS可视化操作进行打包步骤
    在这里插入图片描述
    根据需要,可以签名打包出Debug版本和Release版本
    在这里插入图片描述
    编译出来的目录地址:
    在这里插入图片描述
    最后,我们初次把包打出来之后,当然要验证是否有签名成功
    jarsigner -verbose -certs -verify 签名过的apk文件
    AS调试运行时包验证结果如下
C:\Users\Aso>jarsigner -verbose -certs -verify C:\Users\Aso\Desktop\apk\app-debug.apk

  s = 已验证签名
  m = 在清单中列出条目
  k = 在密钥库中至少找到了一个证书
  i = 在身份作用域内至少找到了一个证书

没有清单。

jar 未签名。

C:\Users\Aso>

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

使用自定义生成的签名证明进行签名Release包时,结果证明不管jks是否迁移到行业标准格式 PKCS12,在对apk进行签名校验时均会出现如下内容(裁剪过的),原因待查! (详细内容传送门)

Microsoft Windows [版本 10.0.18362.1082]
(c) 2019 Microsoft Corporation。保留所有权利。

C:\Users\Aso>jarsigner -verbose -certs -verify C:\Users\Aso\Desktop\jks\release\app-release.apk

sm      2180 Fri Nov 30 00:00:00 CST 1979 AndroidManifest.xml

      >>> 签名者
      X.509, CN=aso, OU=aso, O=aso, L=aso, ST=aso, C=aso
      [证书的有效期为20-9-28 下午11:15至45-9-22 下午11:15]
      [无效的证书链: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target]

sm         6 Fri Nov 30 00:00:00 CST 1979 META-INF/androidx.activity_activity.version

      >>> 签名者
      X.509, CN=aso, OU=aso, O=aso, L=aso, ST=aso, C=aso
      [证书的有效期为20-9-28 下午11:15至45-9-22 下午11:15]
      [无效的证书链: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target]

	......

  s = 已验证签名
  m = 在清单中列出条目
  k = 在密钥库中至少找到了一个证书
  i = 在身份作用域内至少找到了一个证书

- 由 "CN=aso, OU=aso, O=aso, L=aso, ST=aso, C=aso" 签名
    摘要算法: SHA-256
    签名算法: SHA256withRSA, 1024 位密钥

jar 已验证。

警告:
此 jar 包含其证书链无效的条目。原因: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
此 jar 包含其签名者证书为自签名证书的条目。
此 jar 包含的签名没有时间戳。如果没有时间戳, 则在其中任一签名者证书到期 (最早为 2045-09-22) 之后, 用户可能无法验证此 jar。

签名者证书将于 2045-09-22 到期。

C:\Users\Aso>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/250651
推荐阅读
相关标签
  

闽ICP备14008679号