日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

        歡迎訪問 生活随笔!

        生活随笔

        當(dāng)前位置: 首頁 >

        【Android】Android签名:pem和pk8转化为keystore,jks

        發(fā)布時(shí)間:2023/12/10 57 豆豆
        生活随笔 收集整理的這篇文章主要介紹了 【Android】Android签名:pem和pk8转化为keystore,jks 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

        Android簽名,pem和pk8轉(zhuǎn)化為jks

        • Android簽名證書
        • Android簽名JKS
        • JKS簽名生成
        • How to use
        • 擴(kuò)展 jks 轉(zhuǎn)pem/pk8

        Android簽名證書

        • 前因
      1. 最近更換了硬件設(shè)備,硬件廠商給了簽名的pem,pk8,最新的版本沒有給keystore,雖然現(xiàn)在使用jks了,實(shí)在沒辦法,就自己生成吧
      2. 在AndroidMenifest.xml配置sharedUserId需要系統(tǒng)簽名
      3. android:sharedUserId="android.uid.system"
        • 目前獲取系統(tǒng)權(quán)限的方法
        3. platform簽名 4. root固件 (有su) 5. 調(diào)用廠商封裝好的系統(tǒng)權(quán)限的sdk
        • 我們對(duì)第一點(diǎn),做下記錄,那么會(huì)拿到廠商提供的以下兩個(gè)文件


        platform.pk8 保存private key 加密
        platform.x509.pem X.509證書 存儲(chǔ)數(shù)字證書,公鑰信息還能存各種key

        • 但是這兩種文件不能直接進(jìn)行簽名,需要調(diào)用對(duì)App簽名
        java -jar signapk.jar platform.x509.pem platform.pk8 [old].apk [new].apk
        • 對(duì)于這種方式

        需要先生成apk,輸入命令簽名,再使用adb安裝
        調(diào)試 非常不方便,故想將pk8 和pem轉(zhuǎn)成通用的jks或者keystore的簽名

        Note:
        android一般除了使用jarsigner簽名,還有使用signapk 后者位于android源碼,前者位于jdk中。兩者使用的文件格式不同前者使用JKS,后者使用公鑰+私鑰是分開的


        Android簽名JKS

        • 準(zhǔn)備工作
      4. openssl (需下載安裝)
      5. platform.pk8 & platform.x509.pem (廠商提供)
      6. keytool (jdk自帶,默認(rèn)已安裝jdk)
        • openssl安裝
      7. 下載 openssl
      8. 1. 官網(wǎng),無Windows版本
        2. 鏡像,有Windows版本

        • 這里給大家排個(gè)坑

        首先對(duì)應(yīng)好你的編譯APP的JDK版本,如果是JDK8,就下載1.1.1,
        如果是高的版本就下載3.0.0,不然你的JDK8keytool識(shí)別不了

      9. 配置系統(tǒng)環(huán)鏡變量

      10. JKS簽名生成

        主要分三步

      11. pk8 私鑰解密pem格式
      12. openssl pkcs8 -in platform.pk8 -inform DER -outform PEM -out platform.priv.pem -nocrypt
      13. 私鑰通過公鑰pem加密pk12, 需要輸入兩次密碼
      14. openssl pkcs12 -export -in platform.x509.pem -inkey platform.priv.pem -out platform.pk12 -name [別名]
      15. 通過java的keytool 工具生成 keystore, 別名需要跟步驟2的一致,同樣輸入兩次密碼
      16. jks

        keytool -importkeystore -destkeystore platform.jks -srckeystore platform.pk12 -srcstoretype PKCS12 -srcstorepass [密碼] -alias [別名]

        keystore

        keytool -importkeystore -destkeystore platform.keystore -srckeystore platform.pk12 -srcstoretype PKCS12 -srcstorepass [密碼] -alias [別名]
        • 在這里我遇到了一個(gè)小坑

        keytool 錯(cuò)誤: java.io.IOException: parseAlgParameters failed: ObjectIdentifier() -- data isn't an object ID (tag = 48)

        解決方案: 使用jdk16的keytool


        How to use

        • 項(xiàng)目使用jks
        android {signingConfigs {MySignName {keyAlias "[別名]"keyPassword "[密碼]"storeFile file('[jks路徑]')storePassword "[密碼]"}}buildTypes {debug {signingConfig signingConfigs.MySignName}release{signingConfig signingConfigs.MySignName}} }

        Example:

        signingConfigs {signconfig {keyAlias 'platform'keyPassword 'android'storeFile file('../app/platform.jks')storePassword 'android'} }buildTypes {debug {signingConfig signingConfigs.signconfigminifyEnabled falseproguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'}release {signingConfig signingConfigs.signconfigminifyEnabled trueproguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'} }
        • Bingo,現(xiàn)在Android Studio 調(diào)試安裝都是platform簽名后的apk

        擴(kuò)展 jks 轉(zhuǎn)pem/pk8

        主要分五步

      17. java keytool 轉(zhuǎn)成 pkcs12格式
      18. keytool -importkeystore -srckeystore debug.keystore -destkeystore tmp.p12 -srcstoretype JKS -deststoretype PKCS12
      19. pkcs12 dump pem格式
      20. openssl pkcs12 -in tmp.p12 -nodes -out tmp.rsa.pem

        dump的文件格式

        Bag AttributesfriendlyName: [別名]localKeyID: 54 69 6D 65 20 31 35 37 31 38 39 30 30 31 35 30 30 30 Key Attributes: <No Attributes> -----BEGIN PRIVATE KEY----- .... -----END PRIVATE KEY----- Bag AttributesfriendlyName: [別名]localKeyID: 54 69 6D 65 20 31 35 37 31 38 39 30 30 31 35 30 30 30 subject=C = US, ST = California, L = Mountain View, O = Android, OU = Android, CN = Android, emailAddress = android@android.com issuer=C = US, ST = California, L = Mountain View, O = Android, OU = Android, CN = Android, emailAddress = android@android.com-----BEGIN CERTIFICATE----- ... -----END CERTIFICATE-----
      21. 復(fù)制“BEGIN CERTIFICATE” “END CERTIFICATE” 到(新建個(gè)文件) cert.x509.pem
      22. dos命令不好實(shí)現(xiàn),建議采用bash

        grep -zoe '-----BEGIN CERTIFICATE-----.*-----END CERTIFICATE-----' tmp.rsa.pem>cert.x509.pem
      23. 復(fù)制 “BEGIN RSA PRIVATE KEY” “END RSA PRIVATE KEY” 到(同上) private.rsa.pem
      24. dos命令不好實(shí)現(xiàn),建議采用bash

        grep -zoe '-----BEGIN CERTIFICATE-----.*-----END CERTIFICATE-----' tmp.rsa.pem>private.rsa.pem
      25. 生成pk8格式的私鑰
      26. openssl pkcs8 -topk8 -outform DER -in private.rsa.pem -inform PEM -out private.pk8 -nocrypt
        • 至此已經(jīng)生成pem pk8 格式的兩個(gè)簽名文件

        參考
        Android簽名證書 keystore jks pem x509
        pk8/x509.pem轉(zhuǎn)換為keystore

        總結(jié)

        以上是生活随笔為你收集整理的【Android】Android签名:pem和pk8转化为keystore,jks的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

        如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。