本文我们将介绍:
-
私有签名信息和密钥如何在系统源码中进行配置,使系统原生支持私有厂商签名签出的应用安装。
-
部分的系统应用是由编译子系统编译成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-name、apl、app-feature和allowed-acls字段分别复制到UnsgnedReleasedProfileTemplate.json文件中。
3.通过文本查看的方式打开p7b文件,把app-privilege-capabilities字段信息拷贝到UnsgnedReleasedProfileTemplate.json文件中。
说明:验签JSON未输出app-privilege-capabil