日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

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

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

Android簽名,pem和pk8轉化為jks

  • Android簽名證書
  • Android簽名JKS
  • JKS簽名生成
  • How to use
  • 擴展 jks 轉pem/pk8

Android簽名證書

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


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

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

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

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


    Android簽名JKS

    • 準備工作
  • openssl (需下載安裝)
  • platform.pk8 & platform.x509.pem (廠商提供)
  • keytool (jdk自帶,默認已安裝jdk)
    • openssl安裝
  • 下載 openssl
  • 1. 官網,無Windows版本
    2. 鏡像,有Windows版本

    • 這里給大家排個坑

    首先對應好你的編譯APP的JDK版本,如果是JDK8,就下載1.1.1,
    如果是高的版本就下載3.0.0,不然你的JDK8keytool識別不了

  • 配置系統環鏡變量

  • JKS簽名生成

    主要分三步

  • pk8 私鑰解密pem格式
  • openssl pkcs8 -in platform.pk8 -inform DER -outform PEM -out platform.priv.pem -nocrypt
  • 私鑰通過公鑰pem加密pk12, 需要輸入兩次密碼
  • openssl pkcs12 -export -in platform.x509.pem -inkey platform.priv.pem -out platform.pk12 -name [別名]
  • 通過java的keytool 工具生成 keystore, 別名需要跟步驟2的一致,同樣輸入兩次密碼
  • 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 [別名]
    • 在這里我遇到了一個小坑

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

    解決方案: 使用jdk16的keytool


    How to use

    • 項目使用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,現在Android Studio 調試安裝都是platform簽名后的apk

    擴展 jks 轉pem/pk8

    主要分五步

  • java keytool 轉成 pkcs12格式
  • keytool -importkeystore -srckeystore debug.keystore -destkeystore tmp.p12 -srcstoretype JKS -deststoretype PKCS12
  • pkcs12 dump pem格式
  • 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-----
  • 復制“BEGIN CERTIFICATE” “END CERTIFICATE” 到(新建個文件) cert.x509.pem
  • dos命令不好實現,建議采用bash

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

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

    參考
    Android簽名證書 keystore jks pem x509
    pk8/x509.pem轉換為keystore

    總結

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

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。