安全子系统之应用签名与验签
Guide
这是一篇讲解如何生成已经签名的hap包和签名以及验签流程的文章。
一,应用签名与验签的场景
应用开发阶段:保证安装包发布到设备的过程中没有被篡改,应用完整性校验提供了签名工具,签名证书生成规范,公钥等完整的工具支持我们对自己开发的hap安装包进行签名。
应用安装阶段:系统的用户程序框架子系统在接受安装包之后对hap包进行数据解析,通过应用完整性校验模块的API对签名进行验证,校验成功后才允许安装此hap包。应用完整性校验模块在校验签名数据时,会使用系统预置的公钥证书进行校验。
二,应用验签的流程
hap包的组成图如下:
![#星光计划2.0#安全子系统之应用签名与验签-鸿蒙HarmonyOS技术社区](https://s5.51cto.com/oss/202112/27/ddfe18a6b466ccbd6256cb91f872b873.jpg)
可以看到,经过签名的hap包组成多了签名块组成部分
1.整包验签
整包签名数据块是一个PKCS7格式的签名块(signed data),验签过程包括PKSC7签名验证、哈希比较、证书链验证以及证书链与设备预置根证书的匹配校验。
2.授权文件验签
授权文件数据块是一个PKCS7格式的签名块(signed data),其中PKCS7签名块的内容信息(contentinfo)是授权文件的内容。验签过程包括:PKCS7签名验证、哈希比较、证书链验证以及签发授权文件证书的合法性校验。
3.授权文件内容校验
验签模块将对授权文件内容进行合法性检查。如果授权文件是调试类型,则会比对本机UDID是否在授权文件授权调试的UDID列表中,如果本机UDID在授权文件授权调试的UDID列表中,则会进一步比较授权文件中的调试证书和整包签名使用的证书是否相同,如果相同,则验证通过。
二,应用签名流程
流程图如下:
![#星光计划2.0#安全子系统之应用签名与验签-鸿蒙HarmonyOS技术社区](https://s3.51cto.com/oss/202112/27/88869d8df0516fdd0c79fe0cdb4b21e7.jpg)
1.生成密钥和证书请求文件:Build > Generate Key and CSR
1.1 使用DevEcoStudio
1.1.1 如果是首次生成密钥文件*.p12点击new,如果本地已有点击choose existing
![#星光计划2.0#安全子系统之应用签名与验签-鸿蒙HarmonyOS技术社区](https://s6.51cto.com/oss/202112/27/64b28cb72d1666931802cbba2071dcca.jpg)
1.1.2 选择密钥文件存储路径,设置密码(密码由数字符号和字母组成)
![#星光计划2.0#安全子系统之应用签名与验签-鸿蒙HarmonyOS技术社区](https://s6.51cto.com/oss/202112/27/86166848e09a46a626a11fd1a14b6a03.jpg)
1.1.3 在Gernrete Key填写密钥信息
![#星光计划2.0#安全子系统之应用签名与验签-鸿蒙HarmonyOS技术社区](https://s4.51cto.com/oss/202112/27/882bfd534dcf858265c9f7f518a2f66d.jpg)
1.1.4 生成csr证书请求文件*.csr,选择文件存储路径即可
![#星光计划2.0#安全子系统之应用签名与验签-鸿蒙HarmonyOS技术社区](https://s4.51cto.com/oss/202112/27/03be06d81d013e3be066ffcd21bd77c8.jpg)
1.1.5 最后在文件存储路径下生成以下两个文件
![#星光计划2.0#安全子系统之应用签名与验签-鸿蒙HarmonyOS技术社区](https://s3.51cto.com/oss/202112/27/16e3d67ee72c5a3a3d257c76165e667f.jpg)
1.2 使用命令行
1.2.1 用管理员权限打开命令行工具并进到OpenJDK携带的KeyTool工具路径下
![#星光计划2.0#安全子系统之应用签名与验签-鸿蒙HarmonyOS技术社区](https://s4.51cto.com/oss/202112/27/313a64a33b22a8db6d3cc687351c04f9.jpg)
1.2.2 执行如下命令生成密钥p12
- keytool -genkeypair -alias “myApplication_ohos” -keyalg EC -sigalg SHA256withECDSA -dname “C=CN,O=HUAWEI,OU=HUAWEI IDE,CN=myApplication_ohos” -keystore d:\key\myApplication_ohos.p12 -storetype pkcs12 -validity 9125 -storepass 123456Abc -keypass 123456Abc
1.2.3 执行如下命令生成证书请求文件csr
- keytool -certreq -alias “myApplicaiton_ohos” -keystore d:\key\myApplication_ohos.p12 -storetype pkcs12 -file d:\key\myApplication_ohos.csr
2.生成应用证书文件
2.1 将keytool加到系统环境变量并进到Sdk\toolchains\lib目录下
![#星光计划2.0#安全子系统之应用签名与验签-鸿蒙HarmonyOS技术社区](https://s5.51cto.com/oss/202112/27/6279d2541e186a94710914c7f615c45e.jpg)
2.2 执行如下命令生成应用证书cer
- keytool -gencert -alias “OpenHarmony Application CA” -infile d:\key\myApplication_ohos.csr -outfile d:\key\myApplication_ohos.cer -keystore OpenHarmony.p12 -sigalg SHA384withECDSA -storepass 123456 -ext KeyUsage:“critical=digitalSignature” -validity 3650 -rfc
3.生成应用Profile文件
在Sdk\toolchains\lib目录下执行如下命令生成profile文件p7b执行如下命令:
- java -jar provisionsigtool.jar sign --in UnsgnedReleasedProfileTemplate.json --out d:\key\myApplication_ohos_Provision.p7b --keystore OpenHarmony.p12 --storepass 123456 --alias “OpenHarmony Application Profile Release” --sigAlg SHA256withECDSA --cert OpenHarmonyProfileRelease.pem --validity 365 --developer-id ohosdeveloper --bundle-name myApplication_ohos --distribution-certificate d:\key\myApplication_ohos.cer
4.配置应用签名信息
打开File > Project Structure,按照下图配置:
![#星光计划2.0#安全子系统之应用签名与验签-鸿蒙HarmonyOS技术社区](https://s5.51cto.com/oss/202112/27/0f87b371a17c67a0e3aabffce5c3c08c.jpg)
可以在build.gradle中查看签名的信息:
![#星光计划2.0#安全子系统之应用签名与验签-鸿蒙HarmonyOS技术社区](https://s2.51cto.com/oss/202112/27/29521fdf1253ef583a5d8809f8ea2abe.jpg)
编译完成后在下图取出已经签名的hap包:
![#星光计划2.0#安全子系统之应用签名与验签-鸿蒙HarmonyOS技术社区](https://s5.51cto.com/oss/202112/27/af9289445f4c74012a41cb87bd841d35.jpg)
三,总结流程
如下图:
![#星光计划2.0#安全子系统之应用签名与验签-鸿蒙HarmonyOS技术社区](https://s6.51cto.com/oss/202112/27/9640b4ebaa5a99ae84fd3e1ee0a3f8cd.jpg)
相关文章
- Flink 在 58 同城的应用与实践
- 边缘(Edge)应用技术将惠及所有行业
- 制造业如何应用人工智能?
- 工信部要求解除屏蔽网址链接,微信将不再屏蔽淘宝等三方外链?
- 工厂设计模式的探讨——iOS类簇的应用分析
- Android 文件重定向下载 & 通知问题小结
- 大数据在智慧城市中的五大应用
- 人工智能的企业级应用落地实践 | 开发者社区精选文章合集(三十五)
- HaaS UI小程序解决方案教学|阿里云产品内容精选(三十四)
- 微信公众号开发经验总结
- 云原生技术促进产业数字化转型
- APP隐私政策
- 技术干货 | 应用性能提升 70%,探究 mPaaS 全链路压测的实现原理和实施路径
- app域名可以备案吗
- .app域名能备案吗
- 中国信通院何宝宏:2021云计算十大关键词
- 云计算虹吸效应明显 未来将呈现六大发展趋势
- PaaS是什么?什么定位?有什么优势?
- 不同场景教育点播视频课程加密方案介绍
- 真!无钥匙!数字钥匙在智能电动车领域的实践