HarmonyOS NEXT应用开发实战 ( 应用的签名、打包上架,各种证书详解)

ops/2024/11/18 17:33:48/

前言

没经历过的童鞋,首次对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应用开发的过程中,我们需要处理多种类型的证书和文件,这些可以通过以下比喻来帮助记忆和理解它们之间的关系和作用:

  1. 密钥库文件(P12文件) - “保险箱和钥匙”
    比喻为一个“保险箱”,里面存放着我们最重要的资产——私钥和证书。在应用发布时,这个“保险箱”是必不可少的,它确保我们的应用是安全的,来自可信的来源。“钥匙”就是我们用来打开这个保险箱的密码,只能由我们自己掌握。

  2. 证书请求文件(CSR文件) - “申请表”
    可以将CSR文件比喻为申请一个新的银行账户时需要填写的“申请表”。这个表格包含了我们的身份信息(公钥和其他识别信息),当我们想要向证书颁发机构申请正式的“身份证明”(数字证书)时,就需要提交这个“申请表”。

  3. 数字证书文件(CER文件) - “身份证”
    CER文件就像是我们的“身份证”。当我们通过申请表(CSR)获得了这个证书,它就证明了我们的身份。这个“身份证”用于验证我们所发布的应用的合法性和来源,让用户(或者操作系统)相信这个应用是安全的。

  4. 证书链文件(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


http://www.ppmy.cn/ops/134756.html

相关文章

手写模拟Spring Boot自动配置功能

引言 随着微服务架构的兴起,Spring Boot作为一种快速开发框架,因其简化了Spring应用的初始搭建和开发过程,受到了广大开发者的青睐。自动配置作为Spring Boot的核心特性之一,大大减少了手动配置的工作量,提高了开发效…

Android11 修改系统语言

1.定义一个view <RelativeLayoutandroid:id"id/rlChooseLanguage"style"style/SettingAboutItem"><TextViewstyle"style/SettingAboutItemTextView"android:text"string/choose_language" /><ImageView style"st…

无人机场景 - 目标检测数据集 - 车辆检测数据集下载「包含VOC、COCO、YOLO三种格式」

数据集介绍&#xff1a;无人机场景车辆检测数据集&#xff0c;真实场景高质量图片数据&#xff0c;涉及场景丰富&#xff0c;比如无人机场景城市道路行驶车辆图片、无人机场景城市道边停车车辆图片、无人机场景停车场车辆图片、无人机场景小区车辆图片、无人机场景车辆遮挡、车…

Xcode控制台“po“错误:表达式解析失败

iOS开发中&#xff0c;使用Xcode开发时&#xff0c;有时候原本运行好好的项目&#xff0c;突然调试时&#xff0c;发现po命令无法正常显示变量的值&#xff0c;无论是清空编译目录&#xff0c;还是重装Xcode&#xff0c;都无法解决问题。当使用po命令时&#xff0c;显示如下&am…

一个功能强大的文档解析和转换工具,支持PDF、DOCX、PPTX和Markdown等

大家好&#xff0c;今天给大家分享一个用于处理文档的项目Docling&#xff0c;旨在帮助用户轻松快速地解析文档并将其转换为所需格式&#xff0c;为使用生成式人工智能&#xff08;gen AI&#xff09;准备文档。 项目介绍 Docling是一个功能强大的文档解析和转换工具&#xff…

基于80x86汇编语言的打砖块游戏

1 目标和意义 为了巩固汇编语言与接口技术课程所学的理论知识&#xff0c;理解计算机的基本系统结构&#xff0c;理解处理器的工作过程&#xff0c;探究数据和指令的内部表述&#xff0c;特选择本实验。 此实验&#xff0c;能训练运用显示器编程的能力和运算操作的能力&#…

聊天服务器(9)一对一聊天功能

目录 一对一聊天离线消息服务器异常处理 一对一聊天 先新添一个消息码 在业务层增加该业务 没有绑定事件处理器的话消息会派发不出去 聊天其实是服务器做一个中转 现在同时登录两个账号 收到了聊天信息 再回复一下 离线消息 声明中提供接口和方法 张三对离线的李…

SpringBoot开发——整合 apache fileupload 轻松实现文件上传与下载

文章目录 1、实现步骤1.1 添加相关依赖包1.2 添加相关配置参数1.3 文件上传示例1.4 文件下载示例2、小结1、实现步骤 在此,我们以Thymeleaf页面模板引擎为例,简单介绍利用 apache fileupload 工具实现文件上传的功能。 1.1 添加相关依赖包 首先创建一个基础的 Spring Boot…