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

陈浩南xxx
发布于 2024-6-14 15:33
浏览
0收藏

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

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

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

主要是修改openharmony-sdk\9\toolchains\lib\UnsgnedReleasedProfileTemplate.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

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-----\nMIICazCCAhGgAwIBAgIFAPERF2IwCgYIKoZIzj0EAwIwgYIxCzAJBgNVBAYTAkNO\nMR8wHQYDVQQKDBZPcGVuSGFybW9ueS1UaXppLXN1YkNBMSkwJwYDVQQLDCBPcGVu\nSGFybW9ueS1UaXppLXN1YkNBIENvbW11bml0eTEnMCUGA1UEAwweT3Blbkhhcm1v\nbnkgQXBwbGljYXRpb24gU3ViIENBMB4XDTIzMDUyMTE0MDU0M1oXDTI0MDUyMDE0\nMDU0M1owgYkxCzAJBgNVBAYTAkNOMSIwIAYDVQQKDBlPcGVuSGFybW9ueS1UaXpp\nLWFwcC1jZXJ0MSwwKgYDVQQLDCNPcGVuSGFybW9ueS1UaXppLWFwcC1jZXJ0IENv\nbW11bml0eTEoMCYGA1UEAwwfT3Blbkhhcm1vbnkgQXBwbGljYXRpb24gUmVsZWFz\nZTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABN0OL1RqzWXQWCXpT0tt54aFR0Ul\n7pqZYBJaCKT049xUYcfwCHLd0q0IzktNo9nqKIjE5BxOk76w7kHhxwowI2qjazBp\nMB0GA1UdDgQWBBQAW6LlxgLrPko7kHS/jbcsqnh4WTAJBgNVHRMEAjAAMA4GA1Ud\nDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAYBgwrBgEEAY9bAoJ4AQME\nCDAGAgEBCgEAMAoGCCqGSM49BAMCA0gAMEUCIQDHIWx4AELONvCoKaQnHQAW0bay\ngjR168gmlnGfnFGowAIgfMV5/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"
    ]
}

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文件。

其他参考链接

OpenHarmony应用签名 - 系统应用签名

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
标签
已于2024-6-14 15:44:05修改
1
收藏
回复
举报
1条回复
按时间正序
/
按时间倒序
wx64e56d8769574
wx64e56d8769574


老师下午好!我这边软件绿色联盟的运营,看到您写的这篇文章很不错,想问一下方便转载吗,转载到软件绿色联盟的微信公众号上,绿盟覆盖主体主要是开发者,通过日常发布技术文章赋能开发者,转载文章会备注来源以及作者,期待老师的回复!

回复
2024-7-1 15:33:53
回复
    相关推荐