生成Android签名证书
uni-app 2019-12-01 10:02:25

uniapp HBuilder云打包:证书文件不是有效地keystore文件

使用官网提供的命令生成证书

C/C++ Code复制内容到剪贴板
  1. keytool -genkey -alias testalias -keyalg RSA -keysize 2048 -validity 36500 -keystore test.keystore  

 

在云打包时提示证书文件不是有效地keystore文件

第一步:生成正常证书

C/C++ Code复制内容到剪贴板
  1. keytool -genkey -alias testalias -keyalg RSA -sigalg SHA1WithRSA -validity 36500 -keysize 1024 -keystore test.keystore -v  

 

注意:两个关键点

C/C++ Code复制内容到剪贴板
  1. -sigalg SHA1WithRSA  
  2. -keysize 1024  

 

第二步:更改秘钥库类型

C/C++ Code复制内容到剪贴板
  1. keytool -importkeystore -srckeystore ./test.keystore -destkeystore ./test.keystore -deststoretype JKS  

 

到这里,就可以使用新生成的证书进行云打包了

导致这个问题的原因

可以下载HBuilder官方的证书,使用keytool查看

发现

签名算法名称: SHA1withRSA

主体公共密钥算法:1024 位 RSA 密钥

密钥库类型:JKS
 


 

备案时要求提供Android证书的公钥和MD5,这里我们手上应该有keystore,如何获取:

C/C++ Code复制内容到剪贴板
  1. # 1. 导出证书为 cer 文件  
  2. keytool -exportcert \  
  3. -alias baomihua \  
  4. -keystore baomihua.keystore \  
  5. -storepass 123456 \  
  6. -file baomihua.cer  
  7.   
  8. # 2. 输出 MD5 / SHA1 / SHA256 指纹  
  9. echo "=== MD5 ==="  
  10. openssl x509 -in baomihua.cer -noout -fingerprint -md5  
  11. echo "=== SHA1 ==="  
  12. openssl x509 -in baomihua.cer -noout -fingerprint -sha1  
  13. echo "=== SHA256 ==="  
  14. openssl x509 -in baomihua.cer -noout -fingerprint -sha256  
  15.   
  16. # 3. 输出公钥  
  17. echo "=== 公钥 ==="  
  18. openssl x509 -in baomihua.cer -pubkey -noout  

 

添加一个脚本:

extract-cert-info.sh.zip
文件类型: .zip b1be0f36c6208beb11f8f4b80471bcef.zip (1.31 KB)

自动脚本 extract-cert-info.sh,以后只要输入 keystore 文件路径、密码和 alias,就能一次性得到:

MD5 / SHA1 / SHA256 指纹

RSA 公钥(PEM 格式)

公钥 Modulus(16进制 / 10进制) → ⚡ 备案用

 

第二个脚本,在终端提示的同时,生成一个txt的文件用于备份(两个脚本任选其一即可):

extract-cert-info-save-txt.sh.zip
文件类型: .zip 23f34dbe1743d06d7066c3fc0fdd3dc8.zip (1.52 KB)

 

1、给脚本加执行权限:

C/C++ Code复制内容到剪贴板
  1. chmod +x extract-cert-info.sh  

 

2、运行脚本:

C/C++ Code复制内容到剪贴板
  1. ./extract-cert-info.sh /Users/yoyo/baomihua.keystore 123456 baomihua  

 

输出结果

签名 MD5 / SHA1 / SHA256

PEM 公钥(-----BEGIN PUBLIC KEY----- ...)

Modulus 16进制(备案常用)

Modulus 10进制(备案也可能要求)

 

执行脚后输出示例:

=== 签名指纹 ===

--- MD5 ---

md5 Fingerprint=29:8C:5A:5C

--- SHA1 ---

sha1 Fingerprint=09:37:56:F0:DD

--- SHA256 ---

sha256 Fingerprint=E9:EF:F3:24:24:3C

 

=== 公钥 (PEM 格式) ===

-----BEGIN PUBLIC KEY-----

MII4Ykw7c8mXa+maKsYQ

hQIDAQAB

-----END PUBLIC KEY-----

 

=== 公钥 Modulus (16进制) ===

87F44C3B73C9976BE99A2AC61085

 

=== 公钥 Modulus (10进制) ===

171

 

 


 

 

本机生成证书:

生成签名证书

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

C/C++ Code复制内容到剪贴板
  1. keytool -genkey -alias testalias -keyalg RSA -keysize 2048 -validity 36500 -keystore test.keystore  

 

testalias是证书别名,可修改为自己想设置的字符,建议使用英文字母和数字

test.keystore是证书文件名称,可修改为自己想设置的文件名称

 

C/C++ Code复制内容到剪贴板
  1. keytool -importkeystore -srckeystore test.keystore -destkeystore test.keystore -deststoretype pkcs12  

 

 

查看证书:

 

keytool -list -v -keystore test.keystore 

输入密钥库口令:  

 

 

 


 

 

  Android证书 git:(master) keytool -genkey -alias test -keyalg RSA -keysize 2048 -validity 36500 -keystore test.keystore 

输入密钥库口令:  

再次输入新口令: 

您的名字与姓氏是什么?

  [Unknown]:  test

您的组织单位名称是什么?

  [Unknown]:  test

您的组织名称是什么?

  [Unknown]:  test

您所在的城市或区域名称是什么?

  [Unknown]:  test

您所在的省/市/自治区名称是什么?

  [Unknown]:  test

该单位的双字母国家/地区代码是什么?

  [Unknown]:  test

CN=test, OU=test, O=test, L=test, ST=test, C=test是否正确?

  [否]:  Y

 

输入 <test> 的密钥口令

(如果和密钥库口令相同, 按回车):  

再次输入新口令: 

 

Warning:

JKS 密钥库使用专用格式。建议使用 "keytool -importkeystore -srckeystore test.keystore -destkeystore test.keystore -deststoretype pkcs12" 迁移到行业标准格式 PKCS12。

  Android证书 git:(master) ll

total 8

-rw-r--r--  1 yoyo  staff   2.2K 12  1 10:09 test.keystore

  Android证书 git:(master) keytool -importkeystore -srckeystore test.keystore -destkeystore test.keystore -deststoretype pkcs12

输入源密钥库口令:  

已成功导入别名 test 的条目。

已完成导入命令: 1 个条目成功导入, 0 个条目失败或取消

 

Warning:

已将 "test.keystore" 迁移到 Non JKS/JCEKS。将 JKS 密钥库作为 "test.keystore.old" 进行了备份。

  Android证书 git:(master) keytool -list -v -keystore test.keystore

输入密钥库口令:  

密钥库类型: PKCS12

密钥库提供方: SUN

 

您的密钥库包含 1 个条目

 

别名: test

创建日期: 2019-12-1

条目类型: PrivateKeyEntry

证书链长度: 1

证书[1]:

所有者: CN=test, OU=test, O=test, L=test, ST=test, C=test

发布者: CN=test, OU=test, O=test, L=test, ST=test, C=test

序列号: 51ca7b50

有效期为 Sun Dec 01 10:09:11 CST 2019 至 Tue Nov 07 10:09:11 CST 2119

证书指纹:

MD5:  86:87:9E:8D:F3:E5:1D:92:02:4A:B1:60:1C:59:4D:1C

SHA1: E0:FB:FB:1F:00:14:AC:7F:EE:24:7E:8A:3F:26:D4:8A:EA:7C:AC:7E

SHA256: 86:D0:DD:D5:94:76:4E:50:94:8B:3D:9C:5F:C2:B7:05:B5:F4:D9:4F:5B:C3:54:9C:04:50:06:10:27:23:97:00

签名算法名称: SHA256withRSA

主体公共密钥算法: 2048 位 RSA 密钥

版本: 3

 

扩展: 

 

#1: ObjectId: 2.5.29.14 Criticality=false

SubjectKeyIdentifier [

KeyIdentifier [

0000: 9B FD 1E E8 E0 1E EA 38   A3 2C 30 99 8B E2 96 A9  .......8.,0.....

0010: 20 7C EC 90                                         ...

]

]

 

 

 

*******************************************

*******************************************

 

 

 

 

 

 

 

 

 

 

 

本文来自于:http://www.yoyo88.cn/study/uniapp/478.html

Powered by yoyo苏ICP备15045725号