使用真機(jī)設(shè)備運(yùn)行和調(diào)試OpenHarmony應(yīng)用前,需要對(duì)應(yīng)用進(jìn)行簽名才能正常運(yùn)行。該指導(dǎo)用于OpenHarmony應(yīng)用的簽名配置。配置應(yīng)用簽名信息的流程如下圖所示。

生成密鑰和證書(shū)請(qǐng)求文件
OpenHarmony應(yīng)用通過(guò)數(shù)字證書(shū)(.cer文件)和Profile文件(.p7b文件)來(lái)保證應(yīng)用的完整性,需要通過(guò)DevEco Studio來(lái)生成密鑰文件(.p12文件)和證書(shū)請(qǐng)求文件(.csr文件)。同時(shí),也可以使用命令行工具的方式來(lái)生成密鑰文件和證書(shū)請(qǐng)求文件。
使用DevEco Studio生成密鑰和證書(shū)請(qǐng)求文件
在主菜單欄點(diǎn)擊Build > Generate Keyand CSR 。
說(shuō)明如果本地已有對(duì)應(yīng)的密鑰,無(wú)需新生成密鑰,可以在Generate Key界面中點(diǎn)擊下方的Skip跳過(guò)密鑰生成過(guò)程,直接使用已有密鑰生成證書(shū)請(qǐng)求文件。
在Key Store File中,可以點(diǎn)擊Choose Existing選擇已有的密鑰庫(kù)文件(存儲(chǔ)有密鑰的.p12文件);如果沒(méi)有密鑰庫(kù)文件,點(diǎn)擊New進(jìn)行創(chuàng)建。下面以新創(chuàng)建密鑰庫(kù)文件為例進(jìn)行說(shuō)明。

在Create Key Store窗口中,填寫(xiě)密鑰庫(kù)信息后,點(diǎn)擊 OK 。
- Key Store File :選擇密鑰庫(kù)文件存儲(chǔ)路徑。
- Password :設(shè)置密鑰庫(kù)密碼,必須由大寫(xiě)字母、小寫(xiě)字母、數(shù)字和特殊符號(hào)中的兩種以上字符的組合,長(zhǎng)度至少為8位。請(qǐng)記住該密碼,后續(xù)簽名配置需要使用。
- Confirm Password :再次輸入密鑰庫(kù)密碼。

在Generate Key界面中,繼續(xù)填寫(xiě)密鑰信息后,點(diǎn)擊 Next 。
- Alias :密鑰的別名信息,用于標(biāo)識(shí)密鑰名稱(chēng)。請(qǐng)記住該別名,后續(xù)簽名配置需要使用。
- Password :密鑰對(duì)應(yīng)的密碼,與密鑰庫(kù)密碼保持一致,無(wú)需手動(dòng)輸入。
- Validity :證書(shū)有效期,建議設(shè)置為25年及以上,覆蓋應(yīng)用的完整生命周期。
- Certificate :輸入證書(shū)基本信息,如組織、城市或地區(qū)、國(guó)家碼等。

在Generate CSR界面,選擇密鑰和設(shè)置CSR文件存儲(chǔ)路徑。

點(diǎn)擊OK按鈕,創(chuàng)建CSR文件成功,可以在存儲(chǔ)路徑下獲取生成的密鑰庫(kù)文件(.p12)和證書(shū)請(qǐng)求文件(.csr)。

使用命令行工具生成證書(shū)請(qǐng)求文件
使用Open JDK攜帶的Keytool工具生成證書(shū)請(qǐng)求文件。
使用管理員身份運(yùn)行命令行工具。

切換到keytool工具所在路徑,實(shí)際路徑請(qǐng)根據(jù)DevEco Studio安裝目錄進(jìn)行修改。
[]()執(zhí)行如下命令,生成公私鑰文件。例如,生成的密鑰庫(kù)名稱(chēng)為ide_demo_app.p12,以存儲(chǔ)到D盤(pán)根目錄下為例
keytool -genkeypair -alias "ide_demo_app" -keyalg EC -sigalg SHA256withECDSA -dname "C=CN,O=HUAWEI,OU=HUAWEI IDE,CN=ide_demo_app" -keystore d:idedemokey.p12 -storetype pkcs12 -validity 9125 -storepass 123456Abc -keypass 123456Abc生成公私鑰文件的參數(shù)說(shuō)明如下:
說(shuō)明請(qǐng)記錄下alias、storepass和keypass的值,在后續(xù)[配置簽名信息]操作會(huì)使用到。
- alias :密鑰的別名信息,用于標(biāo)識(shí)密鑰名稱(chēng)。
- sigalg :簽名算法,固定為 SHA256withECDSA 。
- dname :按照操作界面提示進(jìn)行輸入。
- C:國(guó)家/地區(qū)代碼,如CN。
- O:組織名稱(chēng),如HUAWEI。
- OU:組織單位名稱(chēng),如HUAWEI IDE。
- CN:名字與姓氏,建議與別名一致。
- validity :證書(shū)有效期,建議設(shè)置為9125(25年)。
- storepass :設(shè)置密鑰庫(kù)密碼,必須由大寫(xiě)字母、小寫(xiě)字母、數(shù)字和特殊符號(hào)中的兩種以上字符的組合,長(zhǎng)度至少為8位。請(qǐng)記住該密碼,后續(xù)簽名配置需要使用。
- keypass :設(shè)置密鑰的密碼,請(qǐng)與storepass保持一致。
執(zhí)行如下命令,執(zhí)行后需要輸入storepass密碼,生成證書(shū)請(qǐng)求文件,后綴格式為.csr。
keytool -certreq -alias "ide_demo_app" -keystore d:idedemokey.p12 -storetype pkcs12 -file d:idedemokey.csr生成證書(shū)請(qǐng)求文件的參數(shù)說(shuō)明如下:
- alias :與[3]中輸入的alias保持一致。
- file :生成的證書(shū)請(qǐng)求文件名稱(chēng),后綴為.csr。
生成應(yīng)用證書(shū)文件
使用[生成密鑰和證書(shū)請(qǐng)求文件]中生成的證書(shū)請(qǐng)求文件,來(lái)生成應(yīng)用簽名所需的數(shù)字證書(shū)文件。生成方法如下:
進(jìn)入DevEco Studio安裝目錄的 Sdktoolchainslib文件夾下(該SDK目錄只能是OpenHarmony SDK,配置方法可參考[配置OpenHarmony SDK]),打開(kāi)命令行工具,執(zhí)行如下命令(如果keytool命令不能執(zhí)行,請(qǐng)?jiān)谙到y(tǒng)環(huán)境變量中添加JDK的環(huán)境變量)。其中,只需要修改輸入和輸出即可快速生成證書(shū)文件,即修改 -infile指定證書(shū)請(qǐng)求文件csr文件路徑, -outfile指定輸出證書(shū)文件名及路徑。
keytool -gencert -alias "OpenHarmony Application CA" -infile myApplication_ohos.csr -outfile myApplication_ohos.cer -keystore OpenHarmony.p12 -sigalg SHA384withECDSA -storepass 123456 -ext KeyUsage:"critical=digitalSignature" -validity 3650 -rfc
關(guān)于該命令的參數(shù)說(shuō)明如下:
- alias :用于簽發(fā)證書(shū)的CA私鑰別名,OpenHarmony社區(qū)CA私鑰存于OpenHarmony.p12密鑰庫(kù)文件中,該參數(shù)不能修改。
- infile :證書(shū)請(qǐng)求(CSR)文件的路徑。
- outfile :輸出證書(shū)鏈文件名及路徑。
- keystore :簽發(fā)證書(shū)的CA密鑰庫(kù)路徑,OpenHarmony密鑰庫(kù)文件名為OpenHarmony.p12,文件在OpenHarmony SDK中 Sdktoolchainslib路徑下,該參數(shù)不能修改。請(qǐng)注意,該OpenHarmony.p12文件并不是[生成密鑰和證書(shū)請(qǐng)求文件]中生成的.p12文件。
- sigalg :證書(shū)簽名算法,該參數(shù)不能修改。
- storepass :密鑰庫(kù)密碼,密碼為123456,該參數(shù)不能修改。
- ext :證書(shū)擴(kuò)展項(xiàng),該參數(shù)不能修改。
- validity :證書(shū)有效期,自定義天數(shù)。
- rfc :輸出文件格式指定,該參數(shù)不能修改。
生成應(yīng)用Profile文件
鴻蒙開(kāi)發(fā)指導(dǎo)文檔:[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md]

Profile文件包含OpenHarmony應(yīng)用的包名、數(shù)字證書(shū)信息、描述應(yīng)用允許申請(qǐng)的證書(shū)權(quán)限列表,以及允許應(yīng)用調(diào)試的設(shè)備列表(如果應(yīng)用類(lèi)型為Release類(lèi)型,則設(shè)備列表為空)等內(nèi)容,每個(gè)應(yīng)用包中均必須包含一個(gè)Profile文件。
進(jìn)入 Sdktoolchainslib目錄下,打開(kāi)命令行工具,執(zhí)行如下命令。
java -jar provisionsigtool.jar sign --in UnsgnedReleasedProfileTemplate.json --out myApplication_ohos_Provision.p7b --keystore OpenHarmony.p12 --storepass 123456 --alias "OpenHarmony Application Profile Release" --sigAlg SHA256withECDSA --cert OpenHarmonyProfileRelease.pem --validity 365 --developer-id ohosdeveloper --bundle-name 包名 --permission 受限權(quán)限名(可選) --permission 受限權(quán)限名(可選) --distribution-certificate myApplication_ohos.cer
關(guān)于該命令的參數(shù)說(shuō)明如下:
- provisionsigtool :Profile文件生成工具,文件在OpenHarmony SDK的 Sdktoolchainslib路徑下。
- in :Profile模板文件所在路徑,文件在OpenHarmony SDK中 Sdktoolchainslib路徑下,該參數(shù)不能修改。
- out :輸出的Profile文件名和路徑。
- keystore :簽發(fā)證書(shū)的密鑰庫(kù)路徑,OpenHarmony密鑰庫(kù)文件名為OpenHarmony.p12,文件在OpenHarmony SDK中 Sdktoolchainslib路徑下,該參數(shù)不能修改。
- storepass :密鑰庫(kù)密碼,密碼為123456,該參數(shù)不能修改。
- alias :用于簽名Profile私鑰別名,OpenHarmony社區(qū)CA私鑰存于OpenHarmony.p12密鑰庫(kù)文件中,該參數(shù)不能修改。
- sigalg :證書(shū)簽名算法,該參數(shù)不能修改。
- cert :簽名Profile的證書(shū)文件路徑,文件在OpenHarmony SDK中 Sdktoolchainslib路徑下,該參數(shù)不能修改。
- validity :證書(shū)有效期,自定義天數(shù)。
- developer-id :開(kāi)發(fā)者標(biāo)識(shí)符,自定義一個(gè)字符串。
- bundle-name :填寫(xiě)應(yīng)用包名。
- permission :可選字段,如果不需要,則可以不用填寫(xiě)此字段;如果需要添加多個(gè)受限權(quán)限,則如示例所示重復(fù)輸入。受限權(quán)限列表如下:ohos.permission.READ_CONTACTS、ohos.permission.WRITE_CONTACTS。
- distribution-certificate :[生成應(yīng)用證書(shū)文件]中生成的證書(shū)文件。
配置應(yīng)用簽名信息
在真機(jī)設(shè)備上調(diào)試前,需要使用到制作的私鑰(.p12)文件、證書(shū)(.cer)文件和Profile(.p7b)文件對(duì)調(diào)試的模塊進(jìn)行簽名。
打開(kāi) File > Project Structure ,點(diǎn)擊 Project > Signing Configs > debug窗口中,去除勾選“Automatically generate signing”,然后配置指定模塊的調(diào)試簽名信息。
- Store File :選擇密鑰庫(kù)文件,文件后綴為.p12,該文件為[生成密鑰和證書(shū)請(qǐng)求文件]中生成的.p12文件。
- Store Password :輸入密鑰庫(kù)密碼,該密碼為[生成密鑰和證書(shū)請(qǐng)求文件]中填寫(xiě)的密鑰庫(kù)密碼保持一致。
- Key Alias :輸入密鑰的別名信息,與[生成密鑰和證書(shū)請(qǐng)求文件]中填寫(xiě)的別名保持一致。
- Key Password :輸入密鑰的密碼,與 Store Password保持一致。
- Sign Alg :簽名算法,固定為SHA256withECDSA。
- Profile File :選擇[生成應(yīng)用Profile文件]中生成的Profile文件,文件后綴為.p7b。
- Certpath File :選擇[生成應(yīng)用證書(shū)文件]中生成的數(shù)字證書(shū)文件,文件后綴為.cer。

設(shè)置完簽名信息后,點(diǎn)擊 OK進(jìn)行保存,然后可以在工程下的build.gradle中查看簽名的配置信息。

默認(rèn)情況下,DevEco Studio編譯hap包的類(lèi)型為debug類(lèi)型,如果需要編譯release類(lèi)型的hap包,請(qǐng)打開(kāi)工程左下角的OhosBuild Variants,設(shè)置模塊的編譯構(gòu)建類(lèi)型為release。

編譯完成后,OpenHarmony應(yīng)用的Hap包可以從工程的bulid目錄下獲取。

審核編輯 黃宇
-
鴻蒙
+關(guān)注
關(guān)注
60文章
3012瀏覽量
46151 -
HarmonyOS
+關(guān)注
關(guān)注
80文章
2156瀏覽量
36270 -
OpenHarmony
+關(guān)注
關(guān)注
33文章
3970瀏覽量
21338
發(fā)布評(píng)論請(qǐng)先 登錄
基于凌羽派的OpenHarmony北向應(yīng)用開(kāi)發(fā):Hello World 示例應(yīng)用
基于凌羽派的OpenHarmony北向應(yīng)用開(kāi)發(fā):Hello World 示例應(yīng)用
保姆級(jí)教程!RK3588 Linux6.1?固件簽名完整實(shí)現(xiàn)方案(不含rootfs)
應(yīng)用開(kāi)發(fā)準(zhǔn)備工作
CW32F030C8T6數(shù)字簽名實(shí)戰(zhàn)
觸覺(jué)智能RK3576開(kāi)發(fā)板OpenHarmony開(kāi)源鴻蒙系統(tǒng)USB控制傳輸功能示例
【匯思博SEEK100開(kāi)發(fā)板試用體驗(yàn)】在開(kāi)發(fā)板鴻蒙OS搭建QT開(kāi)發(fā)環(huán)境
【匯思博SEEK100開(kāi)發(fā)板試用體驗(yàn)】3/第一次使用OpenHarmony
【匯思博SEEK100開(kāi)發(fā)板試用體驗(yàn)】開(kāi)發(fā)環(huán)境安裝配置
自簽名證書(shū)工具cfssl詳解
貢獻(xiàn) OpenHarmony 庫(kù)關(guān)鍵配置
基于小凌派RK2206開(kāi)發(fā)板:OpenHarmony如何使用IoT接口控制UART外設(shè)
OpenHarmony開(kāi)發(fā)實(shí)例:【配置應(yīng)用簽名信息】
評(píng)論