zoukankan      html  css  js  c++  java
  • android初级篇之apk签名key keystore格式转pk8+x509.pem

    转自:http://www.jianshu.com/p/3bd5c68cc44d

    常用的android的签名工具有两个即jarsigner 和apksigner。这两种使用的key格式不一样,keystore格式转pk8+x509.pem

    1. 将keystore文件转换为pkcs12格式

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

    2. 将PKCS12 dump成pem

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

    tmp.rsa.pem 是文本格式可以直接查看

    打开文本:

    Bag Attributes
        friendlyName: dtcamera
        localKeyID: 54 69 6D 65 20 31 34 35 38 38 31 37 33 31 30 37 30 36 
    Key Attributes: <No Attributes>
    -----BEGIN PRIVATE KEY-----
    -----END PRIVATE KEY-----
    Bag Attributes
        friendlyName: dtcamera
        localKeyID: 54 69 6D 65 20 31 34 35 38 38 31 37 33 31 30 37 30 36 
    subject=/CN=DTC
    issuer=/CN=DTC
    -----BEGIN CERTIFICATE-----
    -----END CERTIFICATE-----

    打开文本可以看到私钥(PRIVATE KEY )和证书( CERTIFICATE);

    复制“BEGIN CERTIFICATE” “END CERTIFICATE” 到(新建个文件) cert.x509.pem
    复制 “BEGIN RSA PRIVATE KEY” “END RSA PRIVATE KEY” 到(同上) private.rsa.pem

    cert.x509.pem 文件即是我们最后需要的证书文件

    3. 生成pk8格式的私钥

    openssl pkcs8 -topk8 -outform DER -in     private.rsa.pem -inform PEM -out private.pk8 -nocrypt

    cert.x509.pem private.pk8 即是我们最后需要的文件。

    *备注:
    -nocrypt 这个参数设定key加密 如果设置了这个参数 下面签名 只要证书+key 不需要密码了 如果加密 应该
    openssl pkcs8 -topk8 -outform
     DER -in private.rsa.pem -inform PEM -out private.pk8 接下来输入密码*

    4. 用法

    java -jar signapk.jar cert.x509.pem private.pk8 unsigned.apk signed.apk

    jarsigner 的用法

    jarsigner -verbose -keystore android.keystore -signedjar android_signed.apk android.apk android.keystore

    使用这种方式会报错:找不到 的证书链。×× 必须引用包含专用密钥和相应的公共密钥证书链的有效密钥库密钥条目。

    jarsigner -verbose -keystore  DT.jks -signedjar  signed.apk  unsigned.apk "别名"

    具体可参考 参考链接1
    感谢橘小兔-一米阳光的文章,参考链接2,帮我解决了这个问题,亲测可行。

    参考链接

    1. 命令行jarsigner签字和解决找不到证书链错误
    2. keystore文件转换格式为pk8+x509.pem
    3. jarsigner - JAR 签名和校验工具
  • 相关阅读:
    JSDoc使用指南
    听创始人讲Quora为什么选择Python
    Bootstrap model模态框与百度地图API发生冲突时的解决办法
    使用百度地图API制作线路轨迹播放
    EF+Mysql+DDD框架搭建(一)——code first准备
    RowNumber()分页方法
    设计模式六大原则
    温习.net基础知识(二)装箱和拆箱
    温习.net基础知识(一)基础知识点
    c# 跨域api
  • 原文地址:https://www.cnblogs.com/dirt2/p/6231977.html
Copyright © 2011-2022 走看看