OpenHarmony應用簽名 - DevEco Studio 自動簽名
概述
文檔環境
- 開發環境:MacBook Pro
- DevEco Studio 版本:DevEco Studio 3.1 Beta1(3.1.0.200)
- SDK 版本:3.2.10.6
- 開發板型號:DAYU 200
- 系統版本:OpenHarmony 3.2 Beta5
功能簡介
為了保證OpenHarmony應用的完整性和來源可靠,在應用構建時需要對應用進行簽名。經過簽名的應用才能在設備上安裝、運行、和調試。DevEco Studio自動化簽名功能僅用于應用調試階段使用,不可用于發布上架應用市場。
基本概念
Hap包簽名工具支持本地簽名需求的開發,為OpenHarmony應用提供完整性保護和來源管控機制,該簽名工具基于PKI公鑰證書的機制實現,在進行開發前,開發者應了解以下基本概念:
- 非對稱密鑰對:非對稱密鑰算法是數據簽名/驗簽的基礎,應用簽名工具實現了標準的非對稱密鑰對生成功能(支持的密鑰對類型包括ECC P384/256、RSA2048/3072/4096)
- CSR:CSR(Certificate Signing Request)證書簽發請求是生成證書的前提,他包括證書的公鑰、證書主題和私鑰簽名,在申請證書之前,需要先基于密鑰對生成CSR,然后提交給CA簽發證書。
- 證書:OpenHarmony采用RFC5280標準構建X509證書信任體系。用于應用簽名的OpenHarmony證書共有三級,分為:根CA證書、中間CA證書、最終實體證書,其中最終實體證書分為應用簽名證書和profile簽名證書。應用簽名證書表示應用開發者的身份,可保證系統上安裝的應用來源可追溯,profile簽名證書實現對profile文件的簽名進行驗簽,保證profile文件的完整性。
- HAP包:HAP(OpenHarmony Ability Package)是Ability的部署包,OpenHarmony應用代碼圍繞Ability組件展開,它是由一個或者多個Ability組成。
- profile文件:Hap包中的描述文件,該描述文件描述了已授權的證書權限和設備ID信息等信息。
簽名配置
應用簽名信息配置于工程目錄build-profile.json5文件中,配置項說明:
自動化簽名
未簽名的HAP包
使用DevEco Studio創建一個新的工程,默認是沒有配置簽名信息的。簽名信息可通過工程根路徑的build-profile.json5文件查看。未簽名的HAP包無法保證應用的完整性和來源可靠,在OpenHarmony系統是無法被安裝的。
- 新創建的工程,在build-profile.json5文件的signingConfigs配置項中不包含簽名信息。
- 當未配置簽名信息的工程執行HAP打包時,僅會生成unsigned標記的HAP包。
- hvigor編譯構建工具進行build時,提示未配置簽名信息。
- 未簽名的HAP包在系統中安裝時,報未簽名錯誤。
DevEco Studio 自動簽名
應用在真機設備上運行,需要提前為應用進行簽名,DevEco Studio為開發者提供了自動化簽名方案,可以一鍵完成應用簽名。
配置自動簽名:
- 單擊File > Project Structure > Project > SigningConfigs界面勾選Automatically generate signature,等待自動簽名完成即可,單擊OK。
- 查看build-profile.json5配置信息,配置信息中增加自動簽名生成的證書信息。
- 使用hvigor編譯構建工具build,在output目錄中生成標記為signed的HAP包。
修改應用權限等級
OpenHarmony針對應用訪問額外的系統或其他應用的數據(包括用戶個人數據)或功能,提供了一種訪問控制機制來保證這些數據或功能不會被不當或惡意使用,即應用權限。根據權限對于不同等級應用有不同的開放范圍,權限類型對應分為以下三種,等級依次提高。
- normal權限
- system_basic權限
- system_core權限
默認情況下自動化簽名功能只能申請權限等級為“normal”的權限。若使用了更高級別的權限system_core或system_basic,需修改自動化簽名所需要的Profile模板,然后再使用自動化簽名功能對應用進行簽名。
修改Profile模板:
- 打開OpenHarmony SDK所在目錄,可通過工程根路徑local.properties文件或DevEco Studio菜單欄中單擊File > Settings > SDK > OpenHarmony 界面查看 。
- 在OpenHarmony SDK目錄下,進入{Version} > toolchains > lib文件夾,打開UnsgnedReleasedProfileTemplate.json文件。
- 根據需求對Profile文件進行修改,例如需申請最高級別的權限等級,則修改apl為 system_core,Profile修改參考??HarmonyAppProvision配置文件的說明??。
- 使用DevEco Studio自動化簽名功能(需重新點擊Automatically generate signature )為應用重新生成證書文件和配置信息,安裝后通過bm dump指令查看權限生效情況。