鸿蒙开发应用签名相关—厂商私有签名配置和使用

本文我们将介绍:

  • 私有签名信息和密钥如何在系统源码中进行配置,使系统原生支持私有厂商签名签出的应用安装。

  • 部分的系统应用是由编译子系统编译成hap装入系统中,如何配置这些系统应用的签名。

  • 如何使用Debug级别的签名文件给应用签名。

  • 厂商私有签名如何在DevEco Studio的工程中进行配置。

说明:本文档使用的签名文件和密钥等信息已由OpenHarmony应用签名 - 厂商私有签名文档生成。

文档环境如下:

开发环境:Windows 11

DevEco Studio 版本:DevEco Studio 3.1.1 Release(3.1.0.501)

SDK 版本:3.2.14.1(Full SDK)

开发板型号:DAYU 200

系统版本:OpenHarmony 3.2 Release(3.2.14.5)

涉及仓库:Hap包签名工具[developtools_hapsigner]

配置源码私有签名验证信息

1.配置trusted_apps_sources.json文件,增加私有签名信息。注意“,”符号后面需要加入空格才可正常匹配。文件源码位置:

base/security/appverify/interfaces/innerkits/appverify/config/OpenHarmony/trusted_apps_sources.json

{
    "name":"OpenHarmony-Tizi apps",
    "app-signing-cert":"C=CN, O=OpenHarmony-Tizi-app-cert, OU=OpenHarmony-Tizi-app-cert Community, CN=OpenHarmony Application Release",
    "profile-signing-certificate":"C=CN, O=OpenHarmony-Tizi-profile-cert, OU=OpenHarmony-Tizi-profile-cert Community, CN=OpenHarmony Application Profile Release",
    "profile-debug-signing-certificate":"C=CN, O=OpenHarmony-Tizi-profile-cert, OU=OpenHarmony-Tizi-profile-cert Community, CN=OpenHarmony Application Profile Debug",
    "issuer-ca":"C=CN, O=OpenHarmony-Tizi-subCA, OU=OpenHarmony-Tizi-subCA Community, CN=OpenHarmony Application CA",
    "max-certs-path":3,
    "critialcal-cert-extension":["keyusage"]
}

2.配置trusted_root_ca.json文件,将OpenHarmony-Tizi-rootCA.cer密钥信息处理后加入到文件中。文件源码位置:

base/security/appverify/interfaces/innerkits/appverify/config/OpenHarmony/trusted_root_ca.json

"C=CN, O=OpenHarmony-Tizi-rootCA, OU=OpenHarmony-Tizi-rootCA Community, CN=OpenHarmony Application Root CA":"-----BEGIN CERTIFICATE-----\nMIICQzCCAemgAwIBAgIEUwKY8TAKBggqhkjOPQQDAjCBhTELMAkGA1UEBhMCQ04x\nIDAeBgNVBAoMF09wZW5IYXJtb255LVRpemktcm9vdENBMSowKAYDVQQLDCFPcGVu\nSGFybW9ueS1UaXppLXJvb3RDQSBDb21tdW5pdHkxKDAmBgNVBAMMH09wZW5IYXJt\nb255IEFwcGxpY2F0aW9uIFJvb3QgQ0EwHhcNMjMwNTIxMTQwNTI2WhcNMjQwNTIw\nMTQwNTI2WjCBhTELMAkGA1UEBhMCQ04xIDAeBgNVBAoMF09wZW5IYXJtb255LVRp\nemktcm9vdENBMSowKAYDVQQLDCFPcGVuSGFybW9ueS1UaXppLXJvb3RDQSBDb21t\ndW5pdHkxKDAmBgNVBAMMH09wZW5IYXJtb255IEFwcGxpY2F0aW9uIFJvb3QgQ0Ew\nWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARoC3C5WijOQkLq/AjmtEWkZ+Ooso1p\nRl34qPpEPH0b6iun5wpAlDe20bcCvsiFda2RNXFsqHIl+cj59bnLh83Ro0UwQzAd\nBgNVHQ4EFgQUAIpcSDCk3q3hZ+qwobekzT9vLHAwEgYDVR0TAQH/BAgwBgEB/wIB\nADAOBgNVHQ8BAf8EBAMCAQYwCgYIKoZIzj0EAwIDSAAwRQIhANKbxPqFT5PwURVf\n1Oxa8cf1udcgO0ntULei/GhaQIobAiBH787oVyJtKxMuPw9K6zzhJjBNjZzW0DrK\n/NOyuKLetw==\n-----END CERTIFICATE-----\n"

3.重新编译系统镜像,烧录至设备,使用私有签名签出的应用安装测试。

图片

配置源码编译应用的签名文件

以权限管理应用(com.ohos.permissionmanager)为例,其他应用可根据需求配置。

应用源码位置:applications/standard/permission_manager

应用编译信息:

//     applications/standard/permission_manager/permissionmanager/BUILD.gn
ohos_hap("permission_manager") {
  hap_profile = "src/main/module.json"
  deps = [
    ":permission_manager_js_assets",
    ":permission_manager_resources",
  ]
  certificate_profile = "../signature/pm.p7b"
  hap_name = "permission_manager"
  part_name = "prebuilt_hap"
  subsystem_name = "applications"
  js_build_mode = "debug"
  module_install_dir = "app/com.ohos.permissionmanager"
}

1.使用hap-sign-tool.jar查看原权限管理应用p7b签名文件信息对应的Profile签名证书信息。

p7b文件位置:applications/standard/permission_manager/signature/pm.p7b

java -jar hap-sign-tool.jar verify-profile -inFile pm.p7b -outFil

e pm.json

图片

2.将bundle-nameaplapp-featureallowed-acls字段分别复制到UnsgnedReleasedProfileTemplate.json文件中。

3.通过文本查看的方式打开p7b文件,把app-privilege-capabilities字段信息拷贝到UnsgnedReleasedProfileTemplate.json文件中。

说明:验签JSON未输出app-privilege-capabil

### 如何在 DevEco Studio 中添加签名配置 为了确保应用程序的安全性完整性,在发布 HarmonyOS 应用程序之前,通常需要对其进行签名。以下是关于如何在 DevEco Studio 中为项目添加签名配置的具体方法。 #### 打开项目的构建配置文件 在 DevEco Studio 的代码编辑区中打开 `build.gradle` 文件[^2]。此文件位于模块根目录下,用于定义编译选项其他重要参数。找到该文件中的 `signingConfigs` 节点来指定签名信息: ```gradle android { ... signingConfigs { release { keyAlias 'yourKeyAlias' keyPassword 'yourKeyPassword' storeFile file('path/to/keystore.jks') storePassword 'storePassword' } } buildTypes { release { ... signingConfig signingConfigs.release } } } ``` 上述代码片段展示了如何向 Gradle 构建脚本中加入签名配置项。其中 `keyAlias`, `keyPassword`, `storeFile` `storePassword` 是四个必需字段,分别对应密钥库别名、密钥密码、密钥存储路径及其保护密码。 #### 创建或导入现有的 keystore 文件 如果还没有现成的 `.jks` 或者其他类型的密钥仓库,则可以通过命令行工具 Keytool 来创建一个新的密钥对并保存至本地磁盘上。另外也可以直接将已有证书迁移到当前工作空间内以便后续引用。 #### 配置安全属性文件 (可选) 为了避免敏感数据硬编码于源码之中,建议把实际值存放在单独的安全属性文件里(例如命名为 `local.properties`),并通过读取方式加载这些变量。这样不仅提高了安全性而且方便团队协作管理不同成员各自的私有凭证资料。 ```properties STORE_PASSWORD=yourStorePasswordHere KEY_ALIAS=keyAliasName KEY_PASSWORD=keyPasswordValue STORE_FILE=/absolute/path/to/my-release-key.keystore ``` 接着修改 `build.gradle` 使用外部属性代替固定字符串: ```groovy def getProp(String propName) { def propsFile = rootProject.file("local.properties") if (!propsFile.canRead()) { throw new GradleException("Could not read ${propsFile.name}") } def properties = new Properties() properties.load(new FileInputStream(propsFile)) return properties[propName]?.trim() ?: "" } android { ... signingConfigs { release { keyAlias getProp('KEY_ALIAS') keyPassword getProp('KEY_PASSWORD') storeFile file(getProp('STORE_FILE')) storePassword getProp('STORE_PASSWORD') } } ... } ``` 以上步骤完成后重新同步项目以使更改生效。现在当执行构建任务时会自动采用所设定好的签名方案处理 APK/APKX 输出包。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值