HarmonyOS NEXT应用开发实战 ( 应用的签名、打包上架,各种证书详解)
前言
没经历过的童鞋,首次对HarmonyOS的应用签名打包上架可能感觉繁琐。需要各种秘钥证书生成和申请,混在一起也分不清。其实搞清楚后也就那会事,各个文件都有它存在的作用。
HarmonyOS通过数字证书与Profile文件等签名信息来保证鸿蒙应用/元服务的完整性,鸿蒙应用/元服务如需上架则必须通过签名校验。因此,需要使用发布证书和Profile文件对鸿蒙应用/元服务进行签名后才能发布。
harmonyos应用上架,各种秘钥证书用途是什么?分不清p12文件、csr、cer文件,p7b文件,profile等,用途分别是什么?参见以下详解。
流程
开发者完成HarmonyOS应用/服务开发后,需要将应用/服务打包成App Pack(.app文件),用于上架到AppGallery Connect。发布应用/服务的流程如下图所示:
各种证书介绍
在HarmonyOS应用上架过程中,涉及到多种秘钥和证书文件,每种文件都有其特定的用途。
以下是这些文件的主要用途:
P12文件:
用途:P12文件是一种包含私钥和证书的二进制文件格式。在HarmonyOS应用开发中,P12文件通常用于应用签名。
场景:当你需要为你的应用生成签名时,会用到P12文件。
CSR文件:
用途:CSR(Certificate Signing Request)文件是证书签名请求文件,它包含了公钥以及申请者的身份信息。
场景:当你需要向证书颁发机构(CA)申请证书时,会先生成一个CSR文件并提交给CA。
CER文件:
用途:数字证书,CER文件是一种证书文件格式,通常包含公钥和证书持有者的信息。在HarmonyOS应用中,CER文件可以用于验证应用的签名。
场景:当你从CA获取到证书后,会得到一个CER文件,用于应用签名或验证。由华为AppGallery Connect颁发。
P7B文件:
介绍:即Profile文件,P7B文件是一种包含证书链的文件格式,通常用于存储根证书、中间证书和最终用户证书。
场景:在应用签名时,可能需要包含完整的证书链以确保信任。Profile格式为.p7b,包含HarmonyOS应用/元服务的包名、数字证书信息、HarmonyOS应用/元服务允许申请的证书权限列表,以及允许应用/元服务调试的设备列表(如果应用/元服务类型为Release类型,则设备列表为空)等内容。
每个HarmonyOS应用/元服务包中均必须包含一个Profile文件。
Profile文件分为调试Profile和发布Profile两种。调试时,如果您只需要使用一台调试设备,建议使用DevEco Studio提供的自动签名,此时无需获取调试Profile。如果您使用多个调试设备或者会在断网情况下调试,则需要手动签名,此时您需要申请、下载调试Profile。
获取到调试证书与调试Profile后,您即可使用DevEco Studio手动配置签名信息,然后启动调试。
总结:
- P12文件:
用途:P12文件是一种包含私钥和证书的二进制文件格式,主要用于应用签名。
场景:当需要为应用生成签名时,需使用该文件。 - CSR文件:
用途:CSR(Certificate Signing Request)文件是证书签名请求文件,包含公钥和申请者身份信息。
场景:向证书颁发机构申请证书时,会先生成CSR文件并提交。 - CER文件:
用途:CER文件为数字证书,通常包含公钥和持有者的信息,用于验证应用的签名。
场景:从CA获取到证书时,会得到CER文件,该文件需要在应用上架时提供。 - P7B文件:
介绍:P7B文件是包含证书链的格式,通常用于存储根证书、中间证书和最终用户证书。
场景:应用签名时,可能需要使用完整的证书链以确保信任。Profile格式为.p7b,描述了应用的包名、数字证书信息、权限列表等,必不可少。
P12文件:包含应用程序的私钥,非常重要,确保应用的安全性与可信来源。
CSR文件:请求文件,用于申请数字证书,包含公钥及一些识别信息。
CER文件:证书文件,包含公钥和持有者信息,主要用于验证签名和身份。
P7B文件:包含证书链和应用的元数据信息,是应用安装时必需的文件。
形象化解释
在HarmonyOS应用开发的过程中,我们需要处理多种类型的证书和文件,这些可以通过以下比喻来帮助记忆和理解它们之间的关系和作用:
-
密钥库文件(P12文件) - “保险箱和钥匙”
比喻为一个“保险箱”,里面存放着我们最重要的资产——私钥和证书。在应用发布时,这个“保险箱”是必不可少的,它确保我们的应用是安全的,来自可信的来源。“钥匙”就是我们用来打开这个保险箱的密码,只能由我们自己掌握。 -
证书请求文件(CSR文件) - “申请表”
可以将CSR文件比喻为申请一个新的银行账户时需要填写的“申请表”。这个表格包含了我们的身份信息(公钥和其他识别信息),当我们想要向证书颁发机构申请正式的“身份证明”(数字证书)时,就需要提交这个“申请表”。 -
数字证书文件(CER文件) - “身份证”
CER文件就像是我们的“身份证”。当我们通过申请表(CSR)获得了这个证书,它就证明了我们的身份。这个“身份证”用于验证我们所发布的应用的合法性和来源,让用户(或者操作系统)相信这个应用是安全的。 -
证书链文件(P7B文件) - “身份背景调查”
P7B文件可以看作是一个“身份背景调查报告”。它包含了多个证书的信息(根证书、中间证书等),这些证书共同确保了我们所持有的“身份证”是有效的,避免了伪造的可能性。当我们要展示我们的身份时,这份调查报告为认证提供了更强的信任。
在上架应用时,我们的工作流程可以用一个例子来理解:首先,我们准备“申请表”(生成CSR文件),然后用申请表向银行(证书颁发机构)申请“身份证”(CER文件)。得到身份证后,我们将其放入“保险箱”(P12文件),并确保密码安全(保护P12文件的私钥)。在需要向他人展示身份时,使用“身份背景调查报告”(P7B文件)来进一步证明我们的身份和证明文件的有效性。
准备签名文件
HarmonyOS应用/服务通过数字证书(.cer文件)和Profile文件(.p7b文件)来保证应用/服务的完整性。在申请数字证书和Profile文件前,首先需要通过DevEco Studio来生成密钥(存储在格式为.p12的密钥库文件中)和证书请求文件(.csr文件)。
基本概念
密钥:包含非对称加密中使用的公钥和私钥,存储在密钥库文件中,格式为.p12,公钥和私钥对用于数字签名和验证。
证书请求文件:格式为.csr,全称为Certificate Signing Request,包含密钥对中的公钥和公共名称、组织名称、组织单位等信息,用于向AppGallery Connect申请数字证书。
数字证书:格式为.cer,由华为AppGallery Connect颁发。
Profile文件:格式为.p7b,包含HarmonyOS应用/服务的包名、数字证书信息、描述应用/服务允许申请的证书权限列表,以及允许应用/服务调试的设备列表(如果应用/服务类型为Release类型,则设备列表为空)等内容,每个应用/服务包中均必须包含一个Profile文件。
1.正式环境证书申请-创建密钥库证书p12文件
在主菜单栏单击Build > Generate Key and CSR
在Key Store File中,单击New进行创建
在Create Key Store窗口中,填写密钥库信息后,单击OK。
- Key Store File:设置密钥库文件存储路径,并填写p12文件名。
- Password:设置密钥库密码,必须由大写字母、小写字母、数字和特殊符号中的两种以上字符的组合,长度至少为8位。请记住该密码,后续签名配置需要使用。
- Confirm Password:再次输入密钥库密码。
在Generate Key and CSR界面中,继续填写密钥信息后,单击Next。 - Alias:密钥的别名信息,用于标识密钥名称。请记住该别名,后续签名配置需要使用。
- Password:密钥对应的密码,与密钥库密码保持一致,无需手动输入。
在Generate Key and CSR界面,设置CSR文件存储路径和CSR文件名。
单击OK按钮,创建CSR文件成功,可以在存储路径下获取生成的密钥库文件(.p12)和证书请求文件(.csr)。
2.正式环境证书申请-创建证书请求文件CSR
在Generate Key and CSR界面中,继续填写密钥信息后,单击Next
在Generate Key and CSR界面,设置CSR文件存储路径和CSR文件名
单击Finish,创建CSR文件成功,可以在存储路径下获取生成的密钥库文件(.p12)、证书请求文件(.csr)和material文件夹(存放签名方案相关材料,如密码、证书等)
3.正式环境证书申请-申请创建cer证书
登录AppGallery Connect,选择“证书、APP ID和Profile”
在左侧导航栏选择“证书、APP ID和Profile > 证书”,进入“证书”页面,点击“新增证书”
选择证书类型和上述步骤生成的CSR文件
点击提交即可创建cer证书
4.正式环境证书申请-下载Profile配置项目
在DevEco Studio中配置密钥(.p12)文件、申请的调试证书(.cer)文件和调试Profile(.p7b)文件
在File > Project Structure > Project > Signing Configs窗口中,取消勾选“Automatically generate signature”(如果是HarmonyOS应用,请勾选“Support HarmonyOS”),然后配置工程的签名信息
电子版权申请
上架时审核需提供的资料。
易版权申请地址: http://www.yibanquan.com.cn/huaweientry.jhtml
AGC入口 > 点击易版权 > 填写版本报名信息 > 上传资料 > 提交资料 >
上架软著申请
上架时审核需提供的资料。
软著申请地址: https://www.ccopyright.com.cn
注册实名账号 > 编写软著源码文档30页 > 编写说明文档> 上传资料 > 提交资料 >
等待受理 > 发放电子版
写在最后
最后,推荐下笔者的业余开源app影视项目“爱影家”,推荐分享给与我一样喜欢免费观影的朋友。【注:该项目仅限于学习研究使用!请勿用于其他用途!】
开源地址: 爱影家app开源项目介绍及源码
https://gitee.com/yyz116/imovie
作者:猫哥 (blog.csdn.net/qq8864),转载请注明出处。
团队:坚果派 团队介绍:坚果派由坚果等人创建,团队拥有12个华为HDE带领热爱HarmonyOS/OpenHarmony的开发者,以及若干其他领域的三十余位万粉博主运营。专注于分享HarmonyOS/OpenHarmony、ArkUI-X、元服务、仓颉。团队成员聚集在北京,上海,南京,深圳,广州,宁夏等地,目前已开发鸿蒙原生应用,三方库60+,欢迎交流。
其他资源
https://developer.huawei.com/consumer/cn/doc/app/agc-help-releaseharmony-0000001933963166
https://developer.huawei.com/consumer/cn/doc/app/agc-help-add-debugprofile-0000001914423102
https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/ide-publish-app-V5