1 证书介绍
证书分为发布证书和调试证书,发布证书和发布 Profile 用于在应用上架时对 APP 进行签名,调试证书和调试 Profile 用于在本地调试时对 HAP 进行签名。
证书的生成和签名结合在一起,请参考下边配置签名中的文档。
2 DevEco配置签名
具体内容请参考DevEco配置文档。
3 流水线给应用添加签名
准备申请签名所需文件
准备好申请签名所需3个文件:密钥(.p12文件)、数字证书(.cer文件)、Profile(.p7b文件)。
生成密钥和证书请求文件
使用Open JDK携带的Keytool工具生成密钥和证书请求文件。
-
使用管理员身份运行命令行工具。
-
切换到keytool工具所在路径,路径为DevEco Studio安装目录下的jbr\bin目录。
-
执行如下命令,生成公私钥文件。例如,生成的密钥库名称为idedemokey.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:密钥的别名信息,用于标识密钥名称。
-
sigalg:签名算法,固定为SHA256withECDSA。
-
dname:按照操作界面提示进行输入。
-
C:国家/地区代码,如CN。
-
O:组织名称,如HUAWEI。
-
OU:组织单位名称,如HUAWEI IDE。
-
CN:名字与姓氏,建议与别名一致。
-
-
validity:证书有效期,建议设置为9125(25年)。
-
storepass:设置密钥库密码,必须由大写字母、小写字母、数字和特殊符号中的两种以上字符的组合,长度至少为8位。请记住该密码,后续签名配置需要使用。
-
keypass:设置密钥的密码,请与storepass保持一致。
-
-
执行如下命令,执行后需要输入storepass密码,生成密钥和证书请求文件。
keytool -certreq -alias "ide_demo_app" -keystore d:\\idedemokey.p12 -storetype pkcs12 -file d:\\idedemokey.csr
生成证书请求文件的参数说明如下:
-
alias:与上一步骤中输入的alias保持一致。
-
file:生成的证书请求文件名称,后缀为.csr。
-
-
申请调试数字证书和Profile文件。
生成证书请求文件后,在AppGallery Connect中申请、下载调试数字证书和Profile文件,具体请参考申请调试证书和Profile文件。
对HAP进行签名
通过hvigor打包生成的HAP不会携带签名信息,如果要在真机设备上运行HAP,需要使用命令行工具对HAP进行签名。
-
准备好HAP签名工具hap_sign_tool.jar(在${COMMANDLINE_TOOL_DIR}/command-line-tools/sdk/default/openharmony/toolchains/lib下)。
-
使用如下命令对HAP进行签名。详细的签名工具指导请参考Hap包签名工具。
java -jar hap-sign-tool.jar sign-app -keyAlias "key0" -signAlg "SHA256withECDSA" -mode "localSign" -appCertFile "test.cer" -profileFile "test.p7b" -inFile "hap-unsigned.hap" -keystoreFile "test.p12" -outFile "result\hap-signed.hap" -keyPwd "123456" -keystorePwd "123456" -signCode "1"
关于该命令中需要修改的参数说明如下,其余参数不需要修改:
-
keyAlias:密钥别名。
-
appCertFile:申请的调试证书文件,格式为.cer。
-
profileFile:申请的调试Profile文件,格式为.p7b。
-
inFile:通过hvigor打包生成的未携带签名信息的HAP。
-
keystoreFile:密钥库文件,格式为.p12。
-
outFile:经过签名后生成的携带签名信息的HAP。
-
keyPwd:密钥口令。
-
keystorePwd:密钥库口令。
-
signCode:是否开启代码签名,缺省为开启。1表示开启,0表示不开启。从HarmonyOS 5.0.2 Beta1版本开始,需开启代码签名,否则将导致构建出的包无法安装到设备上。
-
4 权限修改
应用在访问数据或者执行操作时,需要评估该行为是否需要应用具备相关的权限。如果确认需要目标权限,则需要在应用安装包中申请目标权限。
每一个权限的权限等级、授权方式不同,申请权限的方式也不同,具体申请方式见下表。
权限类型 | 授权方式 | 操作路径 |
system_grant | 声明权限 > 访问接口 | |
user_grant | ||
system_grant | ||
user_grant |
受限权限申请后,需要重新生成证书、重新签名。
原文链接:华为开发者文章
更多问题可关注:
鸿蒙游戏官方网站:已有游戏移植-鸿蒙游戏-华为开发者联盟
公开课:华为开发者学堂