了解更多开源请访问:开源基础软件社区https://ost.51cto.com概览文档环境开发环境:MacBookProDevEcoStudio版本:DevEcoStudio3.1Beta1(3.1.0.200)SDK版本:3.2.10.6开发板型号:DAYU200系统版本:OpenHarmony3.2Beta5功能介绍应用需要签名。只有签名的应用程序才能在设备上安装、运行和调试。DevEcoStudio的自动签名功能仅在应用调试阶段使用,不能用于应用市场发布。基本概念Hap包签名工具支持本地签名需求的开发,为OpenHarmony应用提供完整性保护和源代码控制机制。签名工具是基于PKI公钥证书机制实现的。开发者在开发前需要了解以下基本概念:非对称密钥对:非对称密钥算法是数据签名/验证的基础,应用签名工具实现标准的非对称密钥对生成功能(支持的密钥对类型包括ECCP384/256,RSA2048/3072/4096)CSR:CSR(CertificateSigningRequest)是生成证书的先决条件。它包括证书的公钥、证书的主题和私钥的签名。在申请证书之前,需要根据密钥对生成CSR并提交。向CA颁发证书。证书:OpenHarmony使用RFC5280标准构建X509证书信任体系。用于应用程序签名的OpenHarmony证书分为三个级别,包括根CA证书、中间CA证书和终端实体证书。终端实体证书分为应用程序签名证书和配置文件签名证书。应用签名证书代表了应用开发者的身份,可以保证系统安装的应用的来源可追溯。Profile签名证书可以验证Profile文件的签名,保证Profile文件的完整性。HAP包:HAP(OpenHarmonyAbilityPackage)是Ability的部署包。OpenHarmony应用程序代码是围绕能力组件开发的,该组件由一个或多个能力组成。profile文件:Hap包中的描述文件,描述授权的证书颁发机构、设备ID信息等信息。签名配置应用签名信息配置在项目目录build-profile.json5文件中,配置项说明:{"app":{//项目级别信息配置,包括API级别、签名和产品信息"signingConfigs":[{//项目的签名信息,可以包含多个签名信息"name":"default",//标识签名方案的名称"material":{//方案的签名材料"certpath":"ohos.cer",//调试或发布证书文件,格式为.cer"storePassword":"******",//Keystore密码,以密文形式呈现"keyAlias":"debug_ohos",//密钥别名信息"keyPassword":"******",//密钥密码,以密文形式呈现"profile":"ohos.p7b",//调试或发布证书Profile文件,格式为.p7b"signAlg":"SHA256withECDSA",//密钥存储signAlg参数"storeFile":"ohos.p12"//密钥存储文件,格式为.p12}}],"products":[{//定义要构建的产品类别,如通用默认版、付费版、免费版等。"name":"default",//定义产品名称,开发者自定义"signingConfig":"default"//指定当前商品类别对应的签名信息,签名信息需要在signingConfigs中定义}]···}}···自动签署未签名的HAP包使用DevEcoStudio创建一个新项目。默认情况下,没有签名信息的签名信息可以通过项目根路径下的build-profile.json5文件查看。未签名的HAP包无法保证应用程序的完整性和来源可靠性,无法安装在OpenHarmony系统上。新建的项目在build-profile.json5文件的signingConfigs配置项中没有签名信息。当配置没有签名信息的项目进行HAP打包时,只会生成未签名的带标记的HAP包。hvigor编译构建工具构建时,提示未配置签名信息。系统安装未签名的HAP包时,报未签名错误。DevEcoStudio自动签名应用运行在真机上,需要提前对应用进行签名。DevEcoStudio为开发者提供自动签名解决方案,一键完成应用签名。配置自动签名:点击File>ProjectStructure>Project>SigningConfigs界面,勾选Automaticallygeneratesignature,等待自动签名完成,点击OK。查看build-profile.json5配置信息,在配置信息中添加自动签名生成的证书信息。使用hvigor编译构建工具build,在输出目录生成签名的HAP包。修改应用权限级别OpenHarmony为应用访问额外的系统或其他应用数据(包括用户个人数据)或功能提供了一种访问控制机制,以确保这些数据或功能不会被不当或恶意使用,即应用权限。根据权限,不同级别的应用有不同的开放范围。权限类型分为以下三种,级别依次递增。普通权限system_basic权限system_core权限默认情况下,自动签名功能只能申请权限级别为“普通”的权限。如果您使用更高级别的权限system_core或system_basic,您需要修改自动签名所需的profile模板,然后使用自动签名功能对应用程序进行签名。修改Profile模板:打开OpenHarmonySDK所在目录,通过项目根路径下的local.properties文件查看,或者在DevEcoStudio菜单栏点击File>Settings>SDK>OpenHarmony。在OpenHarmonySDK目录中,转到{Version}>toolchains>lib文件夹,然后打开UnsgnedReleasedProfileTemplate.json文件。根据需求修改Profile文件。比如需要申请最高权限,修改apl为system_core。Profile修改参考HarmonyAppProvision配置文件的说明。使用DevEcoStudio的自动签名功能(需要再次点击自动生成签名)为应用重新生成证书文件和配置信息,使用bm安装后使用dump命令查看权限的有效状态。了解更多开源请访问:开源基础软件社区https://ost.51cto.com
