安卓签名证书(.keystore)如何生成,以及.keystore转.jks的实现?

更新日期: 2022-01-17阅读量: 780标签: 应用

Android平台打包发布apk应用,需要使用数字证书(.keystore文件)进行签名,用于表明开发者身份。Android证书的生成是自助和免费的,不需要审批或付费。


安装了JRE(JRE环境)

Oracle官方下载jre安装包:https://www.oracle.com/technetwork/java/javase/downloads/index.html
jdk1.8.0_201的百度网盘地址:https://pan.baidu.com/s/1SPpySlZksTuti8IKe7kCrQ ,提取码:fly6

需确保电脑上安装了JRE(JRE环境),我们将使用JRE自带的创建和管理数字证书的工具Keytool,并使用keytool命令生成签名证书。

以Windows平台,jre安装目录为“E:\jdk1.8.0_201”为例,安装完成后,需要设置为全局变量:

点击电脑右键->选择“属性”,进入“关于”界面,点击右侧“相关设置”下方的“高级系统设置”,然后在“高级”栏目底部,选择“环境变量”,如图所示:


除了上面的方式,我们还可以通过cmd命令行的添加:

set PATH=%PATH%;"E:\jdk1.8.0_201\jre\bin"

注意:

1.环境变量配置是安装目录下的\jre\bin文件夹。如果是其他版本,直接选择\bin文件夹目录。
2.安装JRE环境,建议低版本。否则容易出现证书无法使用的情况,建议jdk1.8.0的版本。


使用keytool -genkey命令生成证书

使用keytool -genkey命令生成证书:

keytool -genkey -alias testalias -keyalg RSA -keysize 2048 -validity 36500 -keystore test.keystore
  • testalias是证书别名,可修改为自己想设置的字符,建议使用英文字母和数字
  • test.keystore是证书文件名称,可修改为自己想设置的文件名称,也可以指定完整文件路径
  • 36500是证书的有效期,表示100年有效期,单位天,建议时间设置长一点,避免证书过期

回车后会提示:

Enter keystore password:  /*输入证书文件密码,输入完成回车*/  
Re-enter new password: /*再次输入证书文件密码,输入完成回车*/
What is your first and last name?
[Unknown]: /*输入名字和姓氏,输入完成回车 */
What is the name of your organizational unit?
[Unknown]: /*输入组织单位名称,输入完成回车 */
What is the name of your organization?
[Unknown]: /*输入组织名称,输入完成回车 */
What is the name of your City or Locality?
[Unknown]: /*输入城市或区域名称,输入完成回车 */
What is the name of your State or Province?
[Unknown]: /*输入省/市/自治区名称,输入完成回车 */
What is the two-letter country code for this unit?
[Unknown]: /*输入国家/地区代号(两个字母),中国为CN,输入完成回车 */
Is CN=XX, OU=XX, O=XX, L=XX, ST=XX, C=XX correct?
[no]: /*确认上面输入的内容是否正确,输入y,回车 */

Enter key password for <testalias>
(RETURN if same as keystore password): /*确认证书密码与证书文件密码一样(HBuilder|HBuilderX要求这两个密码一致),直接回车就可以*/

以上命令运行完成后就会生成证书。注意:上述信息填写要规范,乱填有可能会影响应用上架应用市场。

注意:出现“JKS 密钥库使用专用格式”的提示,如下:


解决方案:把它复制粘贴后,在终端中黏贴进行运行,就可以了。

keytool -importkeystore -srckeystore test.keystore -destkeystore test.keystore -deststoretype pkcs12

使用第三方工具生成证书:

如果你不想下载java的jdk,直接可以使用第三方在线工具进行生成:http://www.applicationloader.net/appuploader/keystore.php

只需要输入证书的别名,密码和创建者名称或者公司名称即可创建安卓证书。如果是测试环境,推荐使用这种方式。


查看证书信息

可以使用以下命令查看:

keytool -list -v -keystore test.keystore  
Enter keystore password: //*输入密码,回车

会输出以下格式信息:

Keystore type: PKCS12    
Keystore provider: SUN    

Your keystore contains 1 entry    

Alias name: test    
Creation date: 2019-10-28    
Entry type: PrivateKeyEntry    
Certificate chain length: 1    
Certificate[1]:    
Owner: CN=Tester, OU=Test, O=Test, L=HD, ST=BJ, C=CN    
Issuer: CN=Tester, OU=Test, O=Test, L=HD, ST=BJ, C=CN    
Serial number: 7dd12840    
Valid from: Fri Jul 26 20:52:56 CST 2019 until: Sun Jul 02 20:52:56 CST 2119    
Certificate fingerprints:    
         MD5:  F9:F6:C8:1F:DB:AB:50:14:7D:6F:2C:4F:CE:E6:0A:A5    
         SHA1: BB:AC:E2:2F:97:3B:18:02:E7:D6:69:A3:7A:28:EF:D2:3F:A3:68:E7    
         SHA256: 24:11:7D:E7:36:12:BC:FE:AF:2A:6A:24:BD:04:4F:2E:33:E5:2D:41:96:5F:50:4D:74:17:7F:4F:E2:55:EB:26    
Signature algorithm name: SHA256withRSA    
Subject Public Key Algorithm: 2048-bit RSA key    
Version: 3

其中证书指纹信息(Certificate fingerprints):

  • MD5
    证书的MD5指纹信息(安全码MD5)
  • SHA1
    证书的SHA1指纹信息(安全码SHA1)
  • SHA256
    证书的SHA256指纹信息(安全码SHA245)


keystore 文件转 jks、pem格式

在应用上架市场的时候,部分应用市场可能需要你提供jks,或者pem格式的文件,这里就需要进行转换操作。下面以“test.keystore”文件为例:

keystore转 jks

先转成.p12

keytool -importkeystore -srckeystore test.keystore -srcstoretype JKS -deststoretype PKCS12 -destkeystore test.p12

后把.p12转成.jks

keytool -v -importkeystore -srckeystore test.p12 -srcstoretype PKCS12 -destkeystore test.jks -deststoretype JKS

jks转 pem

keytool -export -rfc -keystore test.jks -alias fishjump -file test.pem

在每次进行转换的时候,都需要你输入3次证书文件密码。


Pepk 签名压缩的使用

首先需要下载Pepk.jar文件。

pepk.jar的 百度网盘地址:https://pan.baidu.com/s/1FEnsLuytvtBbUOyWdau1Xw,提取码:fly6

把Pepk.jar和你项目的签名文件(xxx.jks)复制到同一文件夹下,然后运行cmd命令cd到该文件夹,执行如下命令:

java -jar pepk.jar --keystore test.jks --alias alias --output=output.zip --encryptionkey=…… --include-cert
  • pepk.jar:pepk文件
  • tst.jks:app的签名文件
  • alias:签名文件别名
  • encryptionkey如果是华为,可以直接复制

执行过程会让你输入key的密码,直接输入就行,执行完成会在目录下生成output.zip文件。

注意:使用git bash来输入命令可能会出现生成失败的情况,建议使用cmd。


站长推荐

1.云服务推荐: 国内主流云服务商/虚拟空间,各类云产品的最新活动,优惠券领取。领取地址:阿里云腾讯云硅云

链接: https://www.fly63.com/article/detial/11018

使用html+css+js实现简易计算器

今天带大家做一个网页版的一个精美的计算器,使用的计算器可以实现标准计算器的功能,题目:计算器的实现,技术:html+css+js,使用html+css+js实现简易计算器,开启你的计算之旅吧。效果图如下,复制即可使用

构建多页面应用——静态资源的处理

图片常见的类型有jp(e)g,png,gif,包括现在普遍使用的svg以及webp。svg作为矢量图形,有一定的使用场景,而webp作为未来web开发的趋势,有一定的使用场景,比如:爱奇艺中的轮播图(carousel)中就是用webp,但其他的见到的不多。

C/S,B/S应用的区别

C/S(Client/Server) :客户端/服务器结构,其中客户端和服务器端都是独立的计算机;B/S(Browser/Server):浏览器/服务器结构,B/S是特殊的一种C/S结构,是对C/S的改进和变化,B/S是基于应用层http协议的web

浅谈单页应用和多页应用

多页面应用:每次页面跳转,后台都会返回一个新的HTML文档,就是多页面应用。单页应用:用vue写的项目是单页应用,刷新页面会请求一个HTML文件,切换页面的时候,并不会发起新的请求一个HTML文件,只是页面内容发生了变化

谈谈StorageEvent

我们在开发多Tab应用时候,常常会遇到多个Tab状态同步的问题。想象如下场景:用户主界面,显示用户购物车内待结算的商品总数。此时,用户可能打开多个Tab

flutter打开第三方应用的实现?

1.flutter开发者网站下载url_launcher插件;在 pubspec.yaml 文件中添加依赖;安装:flutter pub get;导入;_launchURL、_openMapApp为自定义方法名 可以根据自己的场景自定义名称

使用Flask构建一个Web应用

Flask是一个使用Python编写的轻量级Web应用框架。以管理员身份,打开命令提示符窗口,输入下面命令py -3 -m pip install flask

PWA渐进式Web应用:你需要知道的一切

你是否正处于选择 App 开发技术的两难境地?如今,渐进式 Web 应用程序需求旺盛。知道这是为什么吗 ?下面让我们来详细的梳理一下。移动电话用户的增长促使在线企业重新考虑对移动应用的优化

多数程序员难以简单的方式开发应用?

心理学中有一篇相当古老、但又非常重要的论文,题为《魔法数字七(上下浮动二):人类信息处理能力中的一些限制》。这篇文章衡量了大脑处理信息的极限,并给出了一个具体的数字:人脑可以同时容纳五到九个概念

使用typescript构建Vue应用

使用typescript构建Vue应用和使用js一样,都是通过vue-cli去初始化并创建一个vue项目,只不过使用typescript构建的时候要在脚手架问卷操作的时候勾选上typescript选项。使用typescript构建的Vue项目发生了一些变化:

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!