OpenHarmony应用签名 - DevEco Studio 自动签名(4.0-Release)

概述

文档环境

开发环境:Windows 11

DevEco Studio 版本:DevEco Studio 4.0 Release(4.0.0.600)

SDK 版本:4.0.10.13

开发板型号:DAYU200(RK3568)

系统版本:OpenHarmony-4.0-Release

功能简介

为了保证 OpenHarmony 应用的完整性和来源可靠,在应用构建时需要对应用进行签名。经过签名的应用才能在设备上安装、运行、和调试。DevEco Studio 自动化签名功能仅用于应用调试阶段使用,不可用于发布上架应用市场

基本概念

Hap 包签名工具支持本地签名需求的开发,为 OpenHarmony 应用提供完整性保护和来源管控机制,该签名工具基于 PKI 公钥证书的机制实现,在进行开发前,开发者应了解以下基本概念:

  • 非对称密钥对:非对称密钥算法是数据签名/验签的基础,应用签名工具实现了标准的非对称密钥对生成功能(支持的密钥对类型包括 ECC P384/256、RSA2048/3072/4096)
  • CSR:CSR(Certificate Signing Request)证书签发请求是生成证书的前提,他包括证书的公钥、证书主题和私钥签名,在申请证书之前,需要先基于密钥对生成 CSR,然后提交给 CA 签发证书。
  • 证书:OpenHarmony 采用 RFC5280 标准构建 X509 证书信任体系。用于应用签名的 OpenHarmony 证书共有三级,分为:根 CA 证书、中间 CA 证书、最终实体证书,其中最终实体证书分为应用签名证书和 profile 签名证书。应用签名证书表示应用开发者的身份,可保证系统上安装的应用来源可追溯,profile 签名证书实现对 profile 文件的签名进行验签,保证 profile 文件的完整性。
  • HAP 包:HAP(OpenHarmony Ability Package)是 Ability 的部署包,OpenHarmony 应用代码围绕 Ability 组件展开,它是由一个或者多个 Ability 组成。
  • profile 文件:Hap 包中的描述文件,该描述文件描述了已授权的证书权限和设备 ID 信息等信息。

签名配置

应用签名信息配置于工程目录 build-profile.json5 文件中,配置项说明:

{
  "app": {                                 //工程级别信息配置,包含API等级、签名和产品信息
    "signingConfigs": [{                   //工程的签名信息,可包含多个签名信息
      "name": "default",                   //标识签名方案的名称
      "material": {                        //该方案的签名材料
        "certpath": "ohos.cer",            //调试或发布证书文件,格式为.cer
        "storePassword": "******",         //密钥库Password,以密文形式呈现
        "keyAlias": "debug_ohos",          //密钥别名信息
        "keyPassword": "******",           //密钥Password,以密文形式呈现
        "profile": "ohos.p7b",             //调试或发布证书Profile文件,格式为.p7b
        "signAlg": "SHA256withECDSA",      //密钥库signAlg参数
        "storeFile": "ohos.p12"            //密钥库文件,格式为.p12
      }
    }],
    "products": [{                         //定义构建的产品品类,如通用默认版、付费版、免费版等
      "name": "default",                   //定义产品的名称,由开发者自定义
      "signingConfig": "default"           //指定当前产品品类对应的签名信息,签名信息需要在signingConfigs中进行定义
      ...
    }]
    ···
  }
}
···

自动化签名

未签名的 HAP 包

使用 DevEco Studio 创建一个新的工程,默认是没有配置签名信息的。签名信息可通过工程根路径的 build-profile.json5 文件查看。未签名的 HAP 包无法保证应用的完整性和来源可靠,在 OpenHarmony 系统是无法被安装的。

  • 新创建的工程,在 build-profile.json5 文件的 signingConfigs 配置项中不包含签名信息。

  • 当未配置签名信息的工程执行 HAP 打包时,仅会生成 unsigned 标记的 HAP 包。

  • hvigor 编译构建工具进行 build 时,提示未配置签名信息。

  • 未签名的 HAP 包在系统中安装时,报未签名错误。

DevEco Studio 自动签名

应用在真机设备上运行,需要提前为应用进行签名,DevEco Studio 为开发者提供了自动化签名方案,可以一键完成应用签名。

配置自动签名:

  • 单击 File > Project Structure > Project > SigningConfigs 界面勾选 Automatically generate signature,等待自动签名完成即可,单击 OK。

  • 查看 build-profile.json5 配置信息,配置信息中增加自动签名生成的证书信息。

  • 使用 hvigor 编译构建工具 build,在 output 目录中生成标记为 signed 的 HAP 包。

修改应用权限等级

OpenHarmony 针对应用访问额外的系统或其他应用的数据(包括用户个人数据)或功能,提供了一种访问控制机制来保证这些数据或功能不会被不当或恶意使用,即应用权限。根据权限对于不同等级应用有不同的开放范围,权限类型对应分为以下三种,等级依次提高。

  • normal 权限
  • system_basic 权限
  • system_core 权限

默认情况下自动化签名功能只能申请权限等级为“normal”的权限。若使用了更高级别的权限 system_core 或 system_basic,需修改自动化签名所需要的 Profile 模板,然后再使用自动化签名功能对应用进行签名。

修改 Profile 模板:

  • 打开 OpenHarmony SDK 所在目录,可通过工程根路径 local.properties 文件或 DevEco Studio 菜单栏中单击 File > Settings > SDK > OpenHarmony 界面查看 。

  • 在 OpenHarmony SDK 目录下,进入{Version} > toolchains > lib 文件夹,打开 UnsgnedReleasedProfileTemplate.json文件。

  • 使用 DevEco Studio 自动化签名功能(需重新点击 Automatically generate signature )为应用重新生成证书文件和配置信息,安装后通过 bm dump 指令查看权限生效情况。

参考文档

  • 20
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TiZizzz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值