使用真機設備運行和調試OpenHarmony應用前,需要對應用進行簽名才能正常運行。該指導用于OpenHarmony應用的簽名配置。配置應用簽名信息的流程如下圖所示。
生成密鑰和證書請求文件
OpenHarmony應用通過數字證書(.cer文件)和Profile文件(.p7b文件)來保證應用的完整性,需要通過DevEco Studio來生成密鑰文件(.p12文件)和證書請求文件(.csr文件)。同時,也可以使用命令行工具的方式來生成密鑰文件和證書請求文件。
使用DevEco Studio生成密鑰和證書請求文件
在主菜單欄點擊Build > Generate Keyand CSR 。
說明
如果本地已有對應的密鑰,無需新生成密鑰,可以在Generate Key界面中點擊下方的Skip跳過密鑰生成過程,直接使用已有密鑰生成證書請求文件。
在Key Store File中,可以點擊Choose Existing選擇已有的密鑰庫文件(存儲有密鑰的.p12文件);如果沒有密鑰庫文件,點擊New進行創建。下面以新創建密鑰庫文件為例進行說明。
在Create Key Store窗口中,填寫密鑰庫信息后,點擊 OK 。
- Key Store File :選擇密鑰庫文件存儲路徑。
- Password :設置密鑰庫密碼,必須由大寫字母、小寫字母、數字和特殊符號中的兩種以上字符的組合,長度至少為8位。請記住該密碼,后續簽名配置需要使用。
- Confirm Password :再次輸入密鑰庫密碼。
在Generate Key界面中,繼續填寫密鑰信息后,點擊 Next 。
- Alias :密鑰的別名信息,用于標識密鑰名稱。請記住該別名,后續簽名配置需要使用。
- Password :密鑰對應的密碼,與密鑰庫密碼保持一致,無需手動輸入。
- Validity :證書有效期,建議設置為25年及以上,覆蓋應用的完整生命周期。
- Certificate :輸入證書基本信息,如組織、城市或地區、國家碼等。
在Generate CSR界面,選擇密鑰和設置CSR文件存儲路徑。
點擊OK按鈕,創建CSR文件成功,可以在存儲路徑下獲取生成的密鑰庫文件(.p12)和證書請求文件(.csr)。
使用命令行工具生成證書請求文件
使用Open JDK攜帶的Keytool工具生成證書請求文件。
使用管理員身份運行命令行工具。
切換到keytool工具所在路徑,實際路徑請根據DevEco Studio安裝目錄進行修改。
[]()執行如下命令,生成公私鑰文件。例如,生成的密鑰庫名稱為ide_demo_app.p12,以存儲到D盤根目錄下為例
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
生成公私鑰文件的參數說明如下:
說明
請記錄下alias、storepass和keypass的值,在后續[配置簽名信息]操作會使用到。
- alias :密鑰的別名信息,用于標識密鑰名稱。
- sigalg :簽名算法,固定為 SHA256withECDSA 。
- dname :按照操作界面提示進行輸入。
- C:國家/地區代碼,如CN。
- O:組織名稱,如HUAWEI。
- OU:組織單位名稱,如HUAWEI IDE。
- CN:名字與姓氏,建議與別名一致。
- validity :證書有效期,建議設置為9125(25年)。
- storepass :設置密鑰庫密碼,必須由大寫字母、小寫字母、數字和特殊符號中的兩種以上字符的組合,長度至少為8位。請記住該密碼,后續簽名配置需要使用。
- keypass :設置密鑰的密碼,請與storepass保持一致。
執行如下命令,執行后需要輸入storepass密碼,生成證書請求文件,后綴格式為.csr。
keytool -certreq -alias "ide_demo_app" -keystore d:idedemokey.p12 -storetype pkcs12 -file d:idedemokey.csr
生成證書請求文件的參數說明如下:
- alias :與[3]中輸入的alias保持一致。
- file :生成的證書請求文件名稱,后綴為.csr。
生成應用證書文件
使用[生成密鑰和證書請求文件]中生成的證書請求文件,來生成應用簽名所需的數字證書文件。生成方法如下:
進入DevEco Studio安裝目錄的 Sdktoolchainslib文件夾下(該SDK目錄只能是OpenHarmony SDK,配置方法可參考[配置OpenHarmony SDK]),打開命令行工具,執行如下命令(如果keytool命令不能執行,請在系統環境變量中添加JDK的環境變量)。其中,只需要修改輸入和輸出即可快速生成證書文件,即修改 -infile指定證書請求文件csr文件路徑, -outfile指定輸出證書文件名及路徑。
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
關于該命令的參數說明如下:
- alias :用于簽發證書的CA私鑰別名,OpenHarmony社區CA私鑰存于OpenHarmony.p12密鑰庫文件中,該參數不能修改。
- infile :證書請求(CSR)文件的路徑。
- outfile :輸出證書鏈文件名及路徑。
- keystore :簽發證書的CA密鑰庫路徑,OpenHarmony密鑰庫文件名為OpenHarmony.p12,文件在OpenHarmony SDK中 Sdktoolchainslib路徑下,該參數不能修改。請注意,該OpenHarmony.p12文件并不是[生成密鑰和證書請求文件]中生成的.p12文件。
- sigalg :證書簽名算法,該參數不能修改。
- storepass :密鑰庫密碼,密碼為123456,該參數不能修改。
- ext :證書擴展項,該參數不能修改。
- validity :證書有效期,自定義天數。
- rfc :輸出文件格式指定,該參數不能修改。
生成應用Profile文件
鴻蒙開發指導文檔:[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md
]
Profile文件包含OpenHarmony應用的包名、數字證書信息、描述應用允許申請的證書權限列表,以及允許應用調試的設備列表(如果應用類型為Release類型,則設備列表為空)等內容,每個應用包中均必須包含一個Profile文件。
進入 Sdktoolchainslib目錄下,打開命令行工具,執行如下命令。
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 受限權限名(可選) --permission 受限權限名(可選) --distribution-certificate myApplication_ohos.cer
關于該命令的參數說明如下:
- provisionsigtool :Profile文件生成工具,文件在OpenHarmony SDK的 Sdktoolchainslib路徑下。
- in :Profile模板文件所在路徑,文件在OpenHarmony SDK中 Sdktoolchainslib路徑下,該參數不能修改。
- out :輸出的Profile文件名和路徑。
- keystore :簽發證書的密鑰庫路徑,OpenHarmony密鑰庫文件名為OpenHarmony.p12,文件在OpenHarmony SDK中 Sdktoolchainslib路徑下,該參數不能修改。
- storepass :密鑰庫密碼,密碼為123456,該參數不能修改。
- alias :用于簽名Profile私鑰別名,OpenHarmony社區CA私鑰存于OpenHarmony.p12密鑰庫文件中,該參數不能修改。
- sigalg :證書簽名算法,該參數不能修改。
- cert :簽名Profile的證書文件路徑,文件在OpenHarmony SDK中 Sdktoolchainslib路徑下,該參數不能修改。
- validity :證書有效期,自定義天數。
- developer-id :開發者標識符,自定義一個字符串。
- bundle-name :填寫應用包名。
- permission :可選字段,如果不需要,則可以不用填寫此字段;如果需要添加多個受限權限,則如示例所示重復輸入。受限權限列表如下:ohos.permission.READ_CONTACTS、ohos.permission.WRITE_CONTACTS。
- distribution-certificate :[生成應用證書文件]中生成的證書文件。
配置應用簽名信息
在真機設備上調試前,需要使用到制作的私鑰(.p12)文件、證書(.cer)文件和Profile(.p7b)文件對調試的模塊進行簽名。
打開 File > Project Structure ,點擊 Project > Signing Configs > debug窗口中,去除勾選“Automatically generate signing”,然后配置指定模塊的調試簽名信息。
- Store File :選擇密鑰庫文件,文件后綴為.p12,該文件為[生成密鑰和證書請求文件]中生成的.p12文件。
- Store Password :輸入密鑰庫密碼,該密碼為[生成密鑰和證書請求文件]中填寫的密鑰庫密碼保持一致。
- Key Alias :輸入密鑰的別名信息,與[生成密鑰和證書請求文件]中填寫的別名保持一致。
- Key Password :輸入密鑰的密碼,與 Store Password保持一致。
- Sign Alg :簽名算法,固定為SHA256withECDSA。
- Profile File :選擇[生成應用Profile文件]中生成的Profile文件,文件后綴為.p7b。
- Certpath File :選擇[生成應用證書文件]中生成的數字證書文件,文件后綴為.cer。
設置完簽名信息后,點擊 OK進行保存,然后可以在工程下的build.gradle中查看簽名的配置信息。
默認情況下,DevEco Studio編譯hap包的類型為debug類型,如果需要編譯release類型的hap包,請打開工程左下角的OhosBuild Variants,設置模塊的編譯構建類型為release。
編譯完成后,OpenHarmony應用的Hap包可以從工程的bulid目錄下獲取。
審核編輯 黃宇
-
鴻蒙
+關注
關注
57文章
2345瀏覽量
42822 -
HarmonyOS
+關注
關注
79文章
1974瀏覽量
30147 -
OpenHarmony
+關注
關注
25文章
3716瀏覽量
16271
發布評論請先 登錄
相關推薦
評論