原生app签名及生成pem文件

555 阅读2分钟

生成签名证书

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

keytool -genkey -alias testalias -keyalg RSA -keysize 2048 -validity 36500 -keystore test.keystore
  • testalias是证书别名,可修改为自己想设置的字符,建议使用英文字母和数字
  • test.keystore是证书文件名称,可修改为自己想设置的文件名称,也可以指定完整文件路径
  • 36500是证书的有效期,表示100年有效期,单位天,建议时间设置长一点,避免证书过期 回车后会提示输入证书密码及信息,规范填写,可能会影响上架应用市场;

微信图片_20220622115807.png 可以使用以下命令查看:

keytool -list -v -keystore test.keystore 

会输出以下格式信息:

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

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

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

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

有些时候需要把keystore文件转换成pem文件,比如快应用就需要pem文件并与原生签名一致,下面是转换方法:

将keystore文件转换为pkcs12格式的文件

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

20220622120338.png 输入生成keystore时的密码

最后发现同一目录下生成tmp.p12文件

将PKCS12格式的文件 转换成pem

openssl pkcs12 -in tmp.p12 -nodes -out tmp.rsa.pem

同样输入keystore的密码

最后同一目录下生成 tmp.rsa.pem

生成certificate.pem 和private.pem 用记事本将第四步生成的tmp.rsa.pem打开,会发现里面包含certificate 和 private 内容。

复制“BEGIN CERTIFICATE” (包含)至“END CERTIFICATE” (包含)的内容到(新建个文件) certificate.pem

复制 “BEGIN RSA PRIVATE KEY”(包含)至 “END RSA PRIVATE KEY” (包含)的内容 到(同上) private.pem

这样就生成了两个pem文件:一个公钥一个私钥。这就是快应用工程最后需要的签名文件。

在快应用工程目录下的“sign”目录内生成的两个pem文件copy到该目录下就可以打包了。

注:

1、有些时候装的java sdk查看证书时没有MD5信息,有时候又需要,这是因为sdk版本太高导致,可以选择降低版本至:jdk1.8.0,分享一个可用的sdk链接:

链接: pan.baidu.com/s/1Rlg2Ii7Q… 提取码: drm1

2、openssl 将p12文件 转换成pem文件时,如果报错,也可能是openssl版本太高导致,推荐使用1.1.1版本。openssl 下载地址:slproweb.com/products/Wi…