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