中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

公司官網(wǎng)定制上海網(wǎng)站排名seo公司哪家好

公司官網(wǎng)定制,上海網(wǎng)站排名seo公司哪家好,wordpress 更改自帶域名,如何設(shè)計制作網(wǎng)站深入了解 Android 中的應用程序簽名 一、應用程序簽名介紹1.1 應用程序簽名1.2 應用程序簽名的意義1.3 應用程序簽名的流程1.4 應用程序簽名的方案1.5 簽名的重要性和應用場景 二、AOSP 的應用簽名2.1 AOSP的應用簽名文件路徑2.2 應用程序指定簽名文件 三、Android Studio 的應…

深入了解 Android 中的應用程序簽名

  • 一、應用程序簽名介紹
    • 1.1 應用程序簽名
    • 1.2 應用程序簽名的意義
    • 1.3 應用程序簽名的流程
    • 1.4 應用程序簽名的方案
    • 1.5 簽名的重要性和應用場景
  • 二、AOSP 的應用簽名
    • 2.1 AOSP的應用簽名文件路徑
    • 2.2 應用程序指定簽名文件
  • 三、Android Studio 的應用簽名
    • 3.1 Android Studio 簽名步驟
    • 3.2 Android Studio 選擇簽名方案
    • 3.3 應用重新簽名
  • 四、簽名文件及其工具
    • 4.1 簽名文件
    • 4.2 工具 apksigner
    • 4.3 工具 keytool
    • 4.4 簽名證書格式轉(zhuǎn)換
  • 五、總結(jié)

在 Android 應用程序的發(fā)布過程中,APK 的簽名是一項至關(guān)重要的任務(wù)。簽名確保應用程序的完整性、真實性和安全性。在 AOSP 中,開發(fā)者可以使用強大的 apksigner 工具進行 APK 簽名。簽名 APK 是一個重要的過程,用于驗證 APK 的完整性和真實性。在進行簽名之前,確保你已經(jīng)熟悉簽名流程,并且對密鑰庫的管理和安全性有所了解。

一、應用程序簽名介紹

1.1 應用程序簽名

應用程序簽名是將數(shù)字簽名應用于 Android 應用程序(APK 文件)的過程。它使用密鑰對對應用程序進行加密,確保在應用程序發(fā)布和分發(fā)過程中的完整性和真實性。

1.2 應用程序簽名的意義

  • 驗證完整性:簽名可確保 APK 文件在傳輸或分發(fā)過程中沒有被篡改或損壞。
  • 驗證真實性:簽名允許用戶驗證應用程序的來源和開發(fā)者身份,以確保 APK 來自可信的來源。
  • 安全性:簽名可以防止惡意用戶在未經(jīng)授權(quán)的情況下更改應用程序的代碼或資源。

1.3 應用程序簽名的流程

(1)生成密鑰庫:首先,開發(fā)者需要使用 keytool 工具生成一個密鑰庫(JKS 文件),其中包含用于簽名的密鑰對。
(2)配置構(gòu)建腳本:開發(fā)者需要在構(gòu)建腳本(如 build.gradle)中配置簽名相關(guān)的信息,包括密鑰庫的路徑、別名和密碼等。
(3) 使用 apksigner 工具進行簽名:在構(gòu)建過程的最后階段,使用 apksigner 工具對 APK 進行簽名,并輸出簽名后的 APK 文件。

在這里插入圖片描述

1.4 應用程序簽名的方案

(1)APK 簽名方案 V1(JAR 簽名)

傳統(tǒng)的 APK 簽名方案,兼容所有 Android 版本。使用 JAR 簽名對 APK 進行簽名。

(2)APK 簽名方案 V2

引入了增強的簽名機制和對 APK 內(nèi)容的完整性校驗。適用于 Android 7.0。

(3)APK 簽名方案 V3

引入了進一步增強的簽名機制和對 APK 內(nèi)容的完整性校驗。適用于 Android 9.0 及更高版本。

應用簽名:https://source.android.com/docs/security/features/apksigning?hl=zh-cn

1.5 簽名的重要性和應用場景

(1) 系統(tǒng)應用簽名:在 AOSP 中,系統(tǒng)應用必須進行簽名,以確保系統(tǒng)的完整性和安全性。
(2) Google Play Store 發(fā)布要求:如果你計劃將應用程序上傳到 Google Play Store,它必須使用符合要求的簽名方案進行簽名。
(3) 應用程序驗證和更新:簽名允許設(shè)備驗證應用程序的完整性,并支持應用程序的安全更新。

二、AOSP 的應用簽名

2.1 AOSP的應用簽名文件路徑

AOSP的應用簽名文件位于 /build/target/product/security 目錄下。該目錄下包含四個簽名文件:

  • testkey.x509.pem:用于簽名測試應用程序的簽名文件。
  • platform.x509.pem:用于簽名系統(tǒng)應用程序的簽名文件。
  • shared.x509.pem:用于簽名需要與 home/contacts 進程共享數(shù)據(jù)的應用程序的簽名文件。
  • media.x509.pem:用于簽名 media/download 系統(tǒng)中的應用程序的簽名文件。
    在這里插入圖片描述

默認情況下,AOSP 使用 testkey.x509.pem 簽名所有應用程序。如果要為應用程序使用其他簽名文件,可以將簽名文件復制到 /build/target/product/security 目錄下,并在應用程序的 Android.mk 文件中指定簽名文件的名稱。

2.2 應用程序指定簽名文件

AOSP 使用 Android.mk 配置文件編譯代碼,LOCAL_CERTIFICATE 屬性用于為應用程序指定簽名文件

LOCAL_CERTIFICATE := testkey

如果您要為應用程序使用自定義簽名文件,可以使用 LOCAL_CERTIFICATE_FILE 變量指定簽名文件的路徑。

LOCAL_CERTIFICATE_FILE := $(LOCAL_PATH)/my_key.pem

請注意,AOSP 中的簽名文件都是 .pem 格式的 X.509 證書文件。

三、Android Studio 的應用簽名

3.1 Android Studio 簽名步驟

  1. 在工具欄中,單擊 Build > Generate Signed APK。
  2. Key Store Path 字段中,指定密鑰庫文件的路徑。
  3. Key Store Password 字段中,輸入密鑰庫的密碼。
  4. Key Alias 字段中,輸入密鑰的別名。
  5. Key Password 字段中,輸入密鑰的密碼。
  6. 單擊 Generate。

Android Studio 將生成一個新的 APK 文件,該文件將使用指定的密鑰進行簽名的。

也可以直接在app目錄下的build.gradle文件中的android{}下配置簽名,參考如下:

signingConfigs {release {storeFile file(rootProject.storeFile)storePassword rootProject.storePasswordkeyAlias rootProject.keyAliaskeyPassword rootProject.keyPassword}
}buildTypes {release {signingConfig signingConfigs.releaseminifyEnabled trueproguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'}
}

3.2 Android Studio 選擇簽名方案

舊版本的 Android Studio 可以選擇 V1 或 V2 簽名方案,新版本的Android Studio(Android Studio Hedgehog | 2023.1.1)沒有此選項了,默認是只有 V2 簽名。

server@dev-fj-srv:~$ apksigner verify -verbose demo-release.apk 
Verifies
Verified using v1 scheme (JAR signing): false
Verified using v2 scheme (APK Signature Scheme v2): true
Verified using v3 scheme (APK Signature Scheme v3): false
Verified using v4 scheme (APK Signature Scheme v4): false
Verified for SourceStamp: false
Number of signers: 1

如果需要使用V2方案簽名,可以修改signingConfigs配置,添加enableV1SigningenableV2Signing、enableV3Signing、enableV4Signing,參考如下:

signingConfigs {release {storeFile file(rootProject.storeFile)storePassword rootProject.storePasswordkeyAlias rootProject.keyAliaskeyPassword rootProject.keyPasswordenableV1Signing trueenableV2Signing trueenableV3Signing trueenableV4Signing true}
}

或者使用命令行,借助apksigner工具簽名,輸入命令:

apksigner sign --v1-signing-enabled true --v2-signing-enabled true --v3-signing-enabled true --ks platform.jks unsigned.apk

apksigner是工具名稱,–v1-signing-enabled true表示添加v1簽名,本次命令同時添加v1、v2和v3簽名,均使用platform.jks證書。

但是實際測試下來,enableV2SigningenableV3Signing是可以控制的,enableV1SigningenableV4Signing控制無效。

3.3 應用重新簽名

apksigner 提供了對 APK 文件進行簽名的命令行語法如下:

apksigner sign --ks keystore_path --ks-key-alias alias_name --out output_apk input_apk

這里是每個參數(shù)的說明:

  • sign:指定要執(zhí)行的操作為簽名操作。
  • --ks keystore_path:指定密鑰庫(JKS 文件)的路徑。
  • --ks-key-alias alias_name:指定要用于簽名的密鑰庫中的別名。
  • --out output_apk:指定簽名后的 APK 文件的輸出路徑和文件名。
  • input_apk:指定要簽名的原始 APK 文件的路徑和文件名。

你需要替換命令中的 keystore_path、alias_name、output_apkinput_apk 為實際的值。在運行命令之前,請確保已經(jīng)安裝并正確配置了 apksigner 工具,以及提供了有效的密鑰庫和別名。此外,還需要確保你具有對密鑰庫的訪問權(quán)限,并且了解密鑰庫和別名的密碼。

四、簽名文件及其工具

4.1 簽名文件

PEM、JKS(Java KeyStore)、PK8 文件的簡要對比表

特征PEM 文件JKS 文件PK8 文件
格式文本格式,Base64 編碼的 ASCII 文件二進制格式的 Java KeyStore 文件二進制格式的私鑰文件
用途證書、私鑰、公鑰交換存儲密鑰、證書鏈存儲 PKCS#8 格式的私鑰
支持內(nèi)容通常包括證書(X.509)、私鑰證書、私鑰、根證書、中間證書等私鑰
擴展名.pem、.crt.key.jks、.keystore.pk8
密碼保護可選,可以使用密碼保護私鑰是,可以為整個 KeyStore 設(shè)置密碼可選,可以使用密碼保護私鑰
常見工具OpenSSLJava Keytool,KeyStore Explorer 等通常用于 Android 簽名工具
平臺兼容性跨平臺主要用于 Java 環(huán)境主要用于 Android 簽名

PEM 文件和 JKS 文件是用于存儲密鑰和證書的通用格式,而 PK8 文件則是特定于 Android 平臺的私鑰文件格式。PEM 文件通常用于存儲 SSL/TLS 證書,而 JKS 文件通常用于存儲 Android 應用程序的簽名證書。

  1. PEM 文件(Privacy-Enhanced Mail)

PEM 是一種基于文本的文件格式,用于存儲密鑰和證書。PEM 文件使用 Base64 編碼,以便在文本文件中進行傳輸和處理。PEM 文件通常用于存儲證書、私鑰以及其他與密鑰和證書相關(guān)的信息。

PEM 文件的內(nèi)容通常以"-----BEGIN…“和”-----END…"標記包圍的塊形式呈現(xiàn)。PEM 文件可以包含不同類型的內(nèi)容,例如公鑰、私鑰、證書請求(CSR)和 CA 根證書等。 PEM 格式支持的算法包括 RSA、DSA 和 ECDSA 等。

  1. JKS 文件(Java KeyStore)

JKS 是 Java KeyStore 的縮寫,是 Java 平臺下的一種密鑰存儲格式。JKS 文件是二進制格式的密鑰庫,用于存儲密鑰、證書和可信任的證書頒發(fā)機構(gòu)(CA)證書。

JKS 文件是 Java KeyStore 類的默認格式,它可以包含多個條目,每個條目都有一個別名(Alias)和相應的密鑰或證書。JKS 文件通常在 Java 程序和框架中使用,用于管理密鑰和證書。JKS 格式支持的算法包括 RSA、DSA 和 ECDSA,以及更多的加密和簽名算法。

  1. PK8 文件

PK8 文件是一種用于存儲私鑰的文件格式。PK8 文件通常用于 Android 平臺中,用于存儲應用程序的私鑰。這些私鑰用于應用的簽名和應用發(fā)布過程中的安全驗證。

PK8 文件是基于 DER(Distinguished Encoding Rules)編碼的,是一種二進制格式。它通常包含應用的私鑰,用于對應用進行數(shù)字簽名。

PK8 文件是存儲 PKCS#8 格式的私鑰的二進制文件。通常用于 Android 平臺的應用簽名,Android 簽名工具使用的是這種格式的私鑰。

4.2 工具 apksigner

apksigner 是 Android SDK 中的一個命令行工具,用于對 APK 文件進行簽名和驗證。它是 Android 7.0(API 級別 24)及更高版本引入的工具,用于替代之前的 jarsigner 工具。

apksigner 提供了更高級的 APK 簽名功能,包括 APK 簽名方案 v2 和 v3 的支持。它還可以驗證 APK 的簽名,以確保 APK 文件未被篡改,并且可以提供關(guān)于 APK 簽名的詳細信息。你可以通過以下步驟獲取 apksigner 工具:

  1. 安裝 Android SDK:首先,確保你已經(jīng)安裝了 Android SDK(Software Development Kit)。Android SDK 可以從 Android 開發(fā)者網(wǎng)站(https://developer.android.com/studio)上下載和安裝。

  2. 配置環(huán)境變量:將 Android SDK 的 build-tools 目錄路徑添加到系統(tǒng)的環(huán)境變量中。這個目錄包含了 apksigner 工具。具體路徑可能因你的 Android SDK 安裝位置和版本而有所不同。

  3. 檢查 apksigner 工具:打開命令行終端,并輸入以下命令來驗證 apksigner 是否正確安裝:

apksigner --version

如果 apksigner 安裝正確,將顯示 apksigner 的版本信息。apksigner 是在 Android SDK 的 build-tools 目錄中提供的,因此你需要確保你已經(jīng)安裝了相應版本的 build-tools。

除了 apksigner ,還有一個類似的工具 jarsigner
用途:
(1) jarsigner 是 Java 開發(fā)工具包(Java Development Kit,JDK)中的一部分,主要用于對 JAR 文件進行數(shù)字簽名。它不是專門設(shè)計用于 Android APK 文件的。
(2) apksigner 是 Android SDK(Software Development Kit)的一部分,專門設(shè)計用于對 Android APK 文件進行數(shù)字簽名。它提供了更多與 Android 簽名相關(guān)的功能,并支持 APK Signature Scheme v2、v3、v4 等 Android 特定的簽名方案。

簽名方案:
(1) jarsigner 主要支持 Java Keystore(JKS)格式,并使用 JAR 簽名規(guī)范。在 Android 中,它可以用于簽名 APK,但可能無法充分利用 Android 平臺引入的新簽名方案。
(2) apksigner 是專為 Android APK 文件設(shè)計的,支持 APK Signature Scheme v2、v3、v4 等。這些簽名方案提供了更強大的安全性和驗證功能,且 apksigner 是 Android 官方推薦的簽名工具。

🚀 apksigner 命令中的常用選項和用法

  1. APK 簽名
apksigner sign --ks keystore.jks --ks-key-alias mykey --out signed.apk unsigned.apk

這個命令使用名為 keystore.jks 的密鑰庫文件中的 mykey 別名下的密鑰對 unsigned.apk 進行簽名,并將簽名后的 APK 保存為 signed.apk。

  1. 查看 APK 簽名信息
apksigner verify --print-certs signed.apk

這個命令驗證并打印 signed.apk 中的簽名信息和證書鏈。

  1. 驗證 APK 完整性
apksigner verify --verbose signed.apk

這個命令驗證 signed.apk 的完整性,并顯示詳細的驗證結(jié)果。

  1. 檢查 APK 簽名版本
apksigner verify --verbose --print-certs signed.apk | grep "Signer #"

這個命令檢查 signed.apk 中使用的 APK 簽名方案版本。

  1. 提取 APK 簽名證書
apksigner extract-cert --verbose --cert pem --out certificate.pem signed.apk

這個命令從 signed.apk 中提取簽名證書,并將其保存為 certificate.pem 文件。

使用 apksigner --help 命令查看更多的選項和幫助信息。

4.3 工具 keytool

keytool 是 Java 開發(fā)工具包(JDK)中的一個命令行實用程序,用于創(chuàng)建和管理密鑰庫(KeyStore)和相關(guān)的數(shù)字證書。它提供了一組功能來生成密鑰對、生成證書簽名請求、導入和導出證書等操作,以及管理密鑰庫的密碼和別名。

keytool 是一個強大而靈活的工具,通常用于與公鑰基礎(chǔ)設(shè)施(Public Key Infrastructure,PKI)相關(guān)的任務(wù),例如在開發(fā)和部署 Java 應用程序時使用數(shù)字證書進行身份驗證和數(shù)據(jù)加密。

要使用 keytool,需要安裝 Java Development Kit(JDK)并設(shè)置正確的環(huán)境變量。然后可以在命令行中使用 keytool 命令,并提供相應的選項和參數(shù)來執(zhí)行所需的操作。

🚀 keytool 命令中的常用選項和用法

  1. 生成密鑰對(Key Pair)
keytool -genkeypair -alias mykey -keyalg RSA -keysize 2048 -keystore keystore.jks

這個命令生成一個 RSA 密鑰對,并將其存儲在名為 mykey 的別名下,保存在名為 keystore.jks 的密鑰庫文件中。

  1. 查看密鑰庫內(nèi)容
keytool -list -keystore keystore.jks

這個命令顯示密鑰庫文件 keystore.jks 中存儲的密鑰和證書的詳細信息。

  1. 導出證書
keytool -export -alias mykey -file certificate.crt -keystore keystore.jks

這個命令將別名為 mykey 的證書導出到名為 certificate.crt 的文件中。

  1. 導入證書
keytool -import -alias mykey -file certificate.crt -keystore keystore.jks

這個命令將名為 certificate.crt 的證書導入到密鑰庫文件 keystore.jks 中,使用別名 mykey。

  1. 更改密鑰庫密碼
keytool -storepasswd -keystore keystore.jks

這個命令用于更改密鑰庫文件 keystore.jks 的密碼。

  1. 更改密鑰密碼
keytool -keypasswd -alias mykey -keystore keystore.jks

這個命令用于更改別名為 mykey 的密鑰的密碼。

使用 keytool -help 命令查看更多的選項和幫助信息。

4.4 簽名證書格式轉(zhuǎn)換

JKS(Java KeyStore)和 PEM(Privacy Enhanced Mail)是兩種不同的密鑰存儲和交換格式。以下是在兩者之間進行互轉(zhuǎn)的方法:

(1) JKS 到 PEM

  1. 導出證書和私鑰到 PKCS12 格式:
    keytool -importkeystore -srckeystore your_keystore.jks -destkeystore keystore.p12 -srcstoretype JKS -deststoretype PKCS12
    

參數(shù)說明:

  • keytool:用于管理密鑰和證書的命令行工具。
  • -importkeystore:用于將密鑰庫從一種格式轉(zhuǎn)換為另一種格式的命令。Android stduio v3簽名
  • -srckeystore:指定源密鑰庫文件的路徑。
  • -destkeystore:指定目標密鑰庫文件的路徑。
  • -deststoretype:指定目標密鑰庫的類型。
  1. 導出證書和私鑰到 PEM 格式:

    openssl pkcs12 -in keystore.p12 -out keystore.pem
    
  2. 提取私鑰:

    openssl rsa -in keystore.pem -out private-key.pem
    
  3. 提取證書:

    openssl x509 -in keystore.pem -out certificate.pem
    

(2) PEM 到 JKS

  1. 將私鑰和證書合并成 PKCS12 格式:

    openssl pkcs12 -export -out keystore.p12 -inkey private-key.pem -in certificate.pem
    
  2. 將 PKCS12 導入到 JKS:

    keytool -importkeystore -srckeystore keystore.p12 -srcstoretype PKCS12 -destkeystore your_keystore.jks -deststoretype JKS
    

在這些步驟中,your_keystore.jks 是原始的 JKS 文件,private-key.pemcertificate.pem 是 PEM 格式的私鑰和證書文件。在實際操作中,確保替換這些文件名和路徑為你實際的文件名和路徑。

請注意,這些命令假設(shè)你的系統(tǒng)上已經(jīng)安裝了 OpenSSL 工具和 Java Keytool。在執(zhí)行這些命令之前,請備份你的密鑰庫和證書,以避免意外丟失數(shù)據(jù)。

五、總結(jié)

在 Android 開發(fā)中,應用程序簽名是一個重要的步驟,用于確保應用程序的完整性、真實性和安全性。AOSP 提供了強大的 apksigner 工具,可用于對 APK 進行簽名。開發(fā)者需要選擇適合的簽名方案,并遵循最佳實踐和安全建議來保護密鑰庫和簽名的安全性。

相關(guān)參考
[1] SigningConfig:https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/variant/SigningConfig
[2] apksigner:https://developer.android.com/studio/command-line/apksigner?hl=zh-cn#usage-rotate
[3] keytool:https://docs.oracle.com/javase/8/docs/technotes/tools/unix/keytool.html
[4] 為應用簽名:https://developer.android.com/studio/publish/app-signing?hl=zh-cn
[5] 證書格式轉(zhuǎn)換:https://myssl.com/cert_convert.html

http://www.risenshineclean.com/news/58818.html

相關(guān)文章:

  • ui設(shè)計是什么職位aso優(yōu)化是什么
  • 怎么修改網(wǎng)站源文件十大基本營銷方式
  • 零食網(wǎng)站制作的建設(shè)大綱域名查詢138ip
  • 四大網(wǎng)站手機百度引擎搜索入口
  • 東營市做網(wǎng)站優(yōu)化中國seo誰最厲害
  • 石家莊企業(yè)網(wǎng)絡(luò)推廣廣東網(wǎng)站se0優(yōu)化公司
  • 網(wǎng)站開發(fā)需要哪些技術(shù)搜索引擎排名優(yōu)化是什么意思
  • 重慶網(wǎng)網(wǎng)站建設(shè)公司長春網(wǎng)站建設(shè)技術(shù)支持
  • 意大利室內(nèi)設(shè)計網(wǎng)站愛網(wǎng)站關(guān)鍵詞挖掘
  • 哪些網(wǎng)站用.ren域名競價推廣托管服務(wù)
  • 廣西城鄉(xiāng)建設(shè)廳網(wǎng)站外貿(mào)seo網(wǎng)站推廣
  • o2o網(wǎng)站建設(shè)最好公司排名搜索關(guān)鍵詞技巧
  • 如何做純文本網(wǎng)站服裝市場調(diào)研報告
  • 郴州網(wǎng)站開發(fā)公司網(wǎng)絡(luò)營銷與直播電商專業(yè)就業(yè)前景
  • 如何看網(wǎng)站是用什么框架做的如何做線上銷售和推廣
  • 外國網(wǎng)站開發(fā)如何去推廣
  • 品牌建設(shè) 網(wǎng)站怎樣在平臺上發(fā)布信息推廣
  • 正宗營銷型網(wǎng)站建設(shè)中國科技新聞網(wǎng)
  • 國內(nèi)網(wǎng)站建設(shè)公司b站視頻推廣網(wǎng)站2023
  • 競品網(wǎng)站分析免費手機網(wǎng)頁制作
  • 眾包網(wǎng)站開發(fā)網(wǎng)站定制
  • 做網(wǎng)站 需要買云服務(wù)器嗎百度品牌專區(qū)怎么收費
  • 西安做的好的網(wǎng)站公司宣傳推廣方式有哪些
  • 班級網(wǎng)站建設(shè)感想營銷公司排行
  • 域名解析后網(wǎng)站打不開seo關(guān)鍵詞快速排名軟件
  • 鄭州建設(shè)企業(yè)網(wǎng)站公司武漢大學人民醫(yī)院怎么樣
  • 建設(shè)網(wǎng)站的軟件百度網(wǎng)站禁止訪問怎么解除
  • 廈門免費建立企業(yè)網(wǎng)站企業(yè)網(wǎng)絡(luò)推廣方法
  • 學會網(wǎng)站開發(fā)需要多久直銷的八大課程
  • wordpress 如何采集寧波seo外包引流推廣