欢迎访问艾立兹站 Aliz- 专注建站教程与技术分享
您当前的位置:首页 > 鸿蒙开发

OpenHarmony应用签名-手动签名相关探索

时间:2024-06-15 10:39:29  来源:51cto  作者:陈浩南xxx  阅读:

场景一:应用不更改应用证书,只提升应用能申请到的权限等级时,可以覆盖安装

参考解决修改APL、ACL权限后自动签名证书指纹改变,无法覆盖安装的问题

我们在开发OpenHarmony应用使用自动签名时,每次自动签名都会重新生成新的应用证书和Profile签名文件,这样意味着一但重签,再次打包的hap包将无法覆盖安装,当我们不想更改应用证书,只提升应用能申请到的权限等级时,可通过单独修改并重签Profile生成新的p7b文件,替换掉原来自动签名生成的p7b文件,即可解决修改权限等级后,再次自动签名打包的hap无法覆盖安装的问题。

主要是修改openharmony-sdk9toolchainslibUnsgnedReleasedProfileTemplate.json
重签Profile
 可是有时候我们直接拿到的是一个p7b,不知道distribution-certificate参数;可以参考场景二的第一步查看;

场景二:生成厂商私有签名和修改运行系统中的配置文件,使私有签名签出的应用可以正常在系统中安装和使用。

参考OpenHarmony应用签名 - 厂商私有签名的配置和使用

  1. 使用hap-sign-tool.jar查看原权限管理应用p7b签名文件信息对应的Profile签名证书信息。
java -jar hap-sign-tool.jar verify-profile -inFile 你的应用.p7b -outFil
e  你的应用.json
  • 1.
  • 2.

OpenHarmony应用签名-手动签名相关探索-鸿蒙开发者社区 2,将bundle-name、apl、app-feature和allowed-acls字段分别复制到UnsgnedReleasedProfileTemplate.json文件中。 3. 替换distribution-certificate为私有签名OpenHarmony-Tizi-app-cert.pem文件中第一部分的密钥。把回车转换为n字符,替换UnsgnedReleasedProfileTemplate.json文件的distribution-certificate字段

{
    "version-name": "2.0.0",
    "version-code": 2,
    "app-distribution-type": "os_integration",
    "uuid": "5027b99e-5f9e-465d-9508-a9e0134ffe18",
    "validity": {
        "not-before": 1594865258,
        "not-after": 1689473258
    },
    "type": "release",
    "bundle-info": {
        "developer-id": "OpenHarmony",
        "distribution-certificate": "-----BEGIN CERTIFICATE-----nMIICazCCAhGgAwIBAgIFAPERF2IwCgYIKoZIzj0EAwIwgYIxCzAJBgNVBAYTAkNOnMR8wHQYDVQQKDBZPcGVuSGFybW9ueS1UaXppLXN1YkNBMSkwJwYDVQQLDCBPcGVunSGFybW9ueS1UaXppLXN1YkNBIENvbW11bml0eTEnMCUGA1UEAwweT3Blbkhhcm1vnbnkgQXBwbGljYXRpb24gU3ViIENBMB4XDTIzMDUyMTE0MDU0M1oXDTI0MDUyMDE0nMDU0M1owgYkxCzAJBgNVBAYTAkNOMSIwIAYDVQQKDBlPcGVuSGFybW9ueS1UaXppnLWFwcC1jZXJ0MSwwKgYDVQQLDCNPcGVuSGFybW9ueS1UaXppLWFwcC1jZXJ0IENvnbW11bml0eTEoMCYGA1UEAwwfT3Blbkhhcm1vbnkgQXBwbGljYXRpb24gUmVsZWFznZTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABN0OL1RqzWXQWCXpT0tt54aFR0Uln7pqZYBJaCKT049xUYcfwCHLd0q0IzktNo9nqKIjE5BxOk76w7kHhxwowI2qjazBpnMB0GA1UdDgQWBBQAW6LlxgLrPko7kHS/jbcsqnh4WTAJBgNVHRMEAjAAMA4GA1UdnDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAYBgwrBgEEAY9bAoJ4AQMEnCDAGAgEBCgEAMAoGCCqGSM49BAMCA0gAMEUCIQDHIWx4AELONvCoKaQnHQAW0bayngjR168gmlnGfnFGowAIgfMV5/nIvmRAbpapqO3a2pBKeHFfeU5zel/T1Bgty198=n-----END CERTIFICATE-----n",
        "bundle-name": "com.ohos.permissionmanager",
        "apl": "normal",
        "app-feature": "hos_system_app"
    },
    "acls": {
        "allowed-acls": [
            "ohos.permission.GET_SENSITIVE_PERMISSIONS",
            "ohos.permission.GRANT_SENSITIVE_PERMISSIONS",
            "ohos.permission.REVOKE_SENSITIVE_PERMISSIONS",
            "ohos.permission.PERMISSION_USED_STATS",
            "ohos.permission.GET_BUNDLE_INFO_PRIVILEGED",
            "ohos.permission.GET_BUNDLE_INFO",
            "ohos.permission.MANAGE_AUDIO_CONFIG",
            "ohos.permission.MANAGE_CAMERA_CONFIG"
        ]
    },
    "permissions": {
        "restricted-permissions": []
    },
    "issuer": "pki_internal",
    "app-privilege-capabilities": [
        "AllowAppDesktopIconHide",
        "AllowAbilityExcludeFromMissions",
        "AllowAppUsePrivilegeExtension"
    ]
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.

4,ProvisionProfile文件签名,生成权限管理应用的p7b文件。 (具体参数请替换对应你自己的文件,不要硬拷贝)

java -jar hap-sign-tool.jar sign-profile -keyAlias “OpenHarmony-Tizi-profileCA” -signAlg “SHA256withECDSA” -mode “localSign” -profileCertFile “OpenHarmony-Tizi-profile-cert-release.pem” -inFile “UnsgnedReleasedProfileTemplate.json” -keystoreFile “OpenHarmony-Tizi.p12” -outFile “pm.p7b” -keyPwd “Pwd-Tizi-5” -keystorePwd “Pwd-Tizi-2”

5,将生成的.p7b文件替换源码中原p7b文件。

本文配套模板、静态源码可前往艾立兹素材库alisucai.com下载

发表评论 共有0条评论
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
公众号二维码

扫码关注公众号
获取全套技术教程