更多内容请访问:Harmonyos技术社区https://harmonyos.51cto.com指南这篇文章讲解了如何在hap包上生成签名文章以及签名和验证过程。1.应用签名及签名验证场景应用开发阶段:确保安装包在发布到设备的过程中未被篡改,应用完整性验证提供签名工具、签名证书生成规范、公钥等完整tools支持我们对自研的hap安装包进行签名。应用安装阶段:系统用户程序框架子系统收到安装包后,对hap包数据进行解析,通过应用完整性验证模块的API进行签名验证。验证成功后,才允许安装hap包。应用程序完整性验证模块在验证签名数据时,会使用系统预设的公钥证书进行验证。2、应用签名验证过程hap包组成图如下:可以看到,签名后的hap包由更多的签名块组成。1、整包签名数据块为PKCS7格式签名块(已签名数据),签名验证过程包括PKSC7签名验证、哈希比对、证书链验证、证书链与设备预置根证书的匹配验证。2.授权文件签名验证授权文件的数据块是PKCS7格式的签名数据块,其中PKCS7签名块的内容信息(contentinfo)即为授权文件的内容。签名验证过程包括:PKCS7签名验证、哈希比对、证书链验证、颁发的授权文件证书的合法性验证。3、授权文件的内容校验和签名校验模块,对授权文件内容的合法性进行校验。如果授权文件是调试类型的,则比较本地UDID是否在授权文件授权的UDID列表中进行调试。用于包签名的证书是否相同,如果相同则验证通过。2、应用签名过程流程图如下:1、生成密钥和证书请求文件:Build>GenerateKeyandCSR1.1使用DevEcoStudio1.1.1如果是第一次生成密钥文件*.p12,点击新建,如果本地已有,点击chooseexisting1.1.2选择密钥文件存放路径,设置密码(密码由数字和字母组成)1.1.3在GernreteKey中填写密钥信息1.1.4生成csr证书申请文件*.csr,选择文件存放路径1.1.5最后在文件存放路径下生成如下两个文件1.2使用命令行1.2.1以管理员权限打开命令行工具,进入KeyToolOpenJDK1.2.2携带的工具路径执行以下命令生成密钥p12keytool-genkeypair-alias"myApplication_ohos"-keyalgEC-sigalgSHA256withECDSA-dname"C=CN,O=HUAWEI,OU=HUAWEIIDE,CN=myApplication_ohos"-keystored:\key\myApplication_ohos.p12-storetypepkcs12-有效ity9125-storepass123456Abc-45Abc13执行以下命令生成Abc-45Abc1证书请求文件csrkeytool-certreq-alias"myApplicaiton_ohos"-keystored:\key\myApplication_ohos.p12-storetypepkcs12-filed:\key\myApplication_ohos.csr2。生成应用证书文件2.1将keytool加入系统环境变量,进入Sdk\toolchains\2.2在lib目录下执行以下命令生成应用证书cerkeytool-gencert-alias"OpenHarmonyApplicationCA"-infiled:\key\myApplication_ohos.csr-outfiled:\key\myApplication_ohos.cer-keystoreOpenHarmony.p12-sigalgSHA384withECDSA-storepass123456-extKeyUsage:“critical=digitalSignature”-validity3650-rfc3。生成应用配置文件在Sdk\toolchains\lib目录下执行如下命令生成配置文件p7b执行如下命令:java-jarprovisionsigtool.jarsign--inUnsgnedReleasedProfileTemplate.json--outd:\key\myApplication_ohos_Provision.p7b--keystoreOpenHarmony.p12--storepass123456--alias"OpenHarmonyApplicationProfileRelease"--sigAlgSHA256withECDSA--certOpenHarmonyProfileRelease.pem--validity365--developer-idooperbholicdistribution-certified:\key\myApplication_ohos.cer4。配置应用程序签名信息打开File>ProjectStructure如下图配置:可以在build.gradle中查看签名信息:编译完成后,取出下图中已签名的hap包:3、总结流程如下:更多内容请访问:与华为官方共建的鸿蒙技术社区https://harmonyos.51cto.com
