当前位置: 首页 > news >正文

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

  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

相关文章:

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

前言 没经历过的童鞋,首次对HarmonyOS的应用签名打包上架可能感觉繁琐。需要各种秘钥证书生成和申请,混在一起也分不清。其实搞清楚后也就那会事,各个文件都有它存在的作用。 HarmonyOS通过数字证书与Profile文件等签名信息来保证鸿蒙应用/…...

【CICD】CICD 持续集成与持续交付在测试中的应用

一、什么是CICD? CI/CD 是指持续集成(Continuous Integration)和持续部署(Continuous Deployment)或持续交付(Continuous Delivery) 1.1 持续集成(Continuous Integration&#xf…...

Dolby TrueHD和Dolby Digital Plus (E-AC-3)编码介绍

文章目录 1. Dolby TrueHD特点总结 2. Dolby Digital Plus (E-AC-3)特点总结 Dolby TrueHD 与 Dolby Digital Plus (E-AC-3) 的对比 Dolby TrueHD和Dolby Digital Plus (E-AC-3) 是两种高级的杜比音频编码格式,常用于蓝光影碟、流媒体、影院等高品质音频传输场景。它…...

数字频率计的设计-- 基于 HDL 方法

目录 数字频率计的设计 1.计数、锁存与显示译码电路设计 2.主控电路设计 3.分频电路设计 4.顶层电路设计 伪随机序列发生器 的设计 数字频率计的设计 基于HDL设计数字系统时,可以根据需要应用Verilog HDL描述所需要的功能电路,既有利于节约资源&am…...

[程序员] 没有产生core文件的原因

最近和同事一块看一个core文件没有产生的问题,总结了一些在CSDN的专栏里。分析的过程,参考使用了ftrace的功能,感觉非常实用。 如果有需要可以参考。大体上就这么几种情况:信号的特殊处理,coredump相关的配置没有设置正确,文件系统访问权限问题,setuid相关的不匹配问题。…...

【数字图像处理+MATLAB】基于 Sobel 算子计算图像梯度并进行边缘增强:使用 imgradientxy 函数

引言 在图像处理中,边缘通常是图像中像素强度变化最大的地方,这种变化可以通过计算图像的梯度来量化。梯度是一个向量,它的方向指向像素强度增加最快的方向,它的大小(或者说幅度)表示像素强度增加的速度。…...

P10901 [蓝桥杯 2024 省 C] 封闭图形个数

铁子们好呀,今天博主给大家更新一道编程题!!! 题目链接如下: P10901 [蓝桥杯 2024 省 C] 封闭图形个数 好,接下来,我将从三个方面讲解这道例题。分别是 题目解析算法原理代码实现 文章目录 1.题…...

ubuntu-desktop-24.04上手指南(更新阿里源、安装ssh、安装chrome、设置固定IP、安装搜狗输入法)

ubuntu-desktop-24.04上手指南(更新阿里源、安装ssh、安装chrome、设置固定IP、安装搜狗输入法) 一、更新并安装基础软件 #切换root用户 sudo su -#更新 apt update #升级 apt upgrade#install vim apt install vim#install net-tools apt install net-tools二、安装ssh并设置…...

手机直连卫星NTN通信初步研究

目录 1、手机直连卫星之序幕 2、卫星NTN及其网络架构 2.1 NTN 2.2 NTN网络架构 3、NTN的3GPP标准化进程 3.1 NTN需要适应的特性 3.2 NTN频段 3.3 NTN的3GPP标准化进程概况 3.4 NTN的3GPP标准化进程的详情 3.4.1 NR-NTN 3.4.1.1 NTN 的无线相关 SI/WI 3.4.1.2…...

蓝桥杯c++算法学习【2】之搜索与查找(九宫格、穿越雷区、迷宫与陷阱、扫地机器人:::非常典型的必刷例题!!!)

别忘了请点个赞收藏关注支持一下博主喵!!! 关注博主,更多蓝桥杯nice题目静待更新:) 搜索与查找 一、九宫格 【问题描述】 小明最近在教邻居家的小朋友小学奥数,而最近正好讲述到了三阶幻方这个部分,三 …...

Android加载pdf

依赖 implementation com.squareup.okhttp3:okhttp:4.9.1 implementation com.github.barteksc:android-pdf-viewer:3.2.0-beta.1在project.build中添加该源 maven { url "https://repository.liferay.com/nexus/content/repositories/public/" }XML <LinearLa…...

IOT物联网低代码可视化大屏解决方案汇总

目录 参考来源云服务商阿里云物联网平台产品主页产品文档 开源项目DGIOT | 轻量级工业物联网开源平台项目特点项目地址开源许可 IoTGateway | 基于.NET6的跨平台工业物联网网关项目特点项目地址开源许可 IoTSharp | 基于.Net Core开源的物联网基础平台项目特点项目地址开源许可…...

Python的面向对象day7

1、什么是面向对象 面向对象称为OO&#xff0c;他通过将数据和功能封装在一个被称为‘对象’的实体中&#xff0c;来组织和管理代码。面向对象变成&#xff08;OOP&#xff09;具有四个特性&#xff0c;封装、继承、多态、抽象 优点&#xff1a;模块化、安全性高、代码重用性…...

计算机网络(11)和流量控制补充

这一篇对数据链路层中的和流量控制进行详细学习 流量控制&#xff08;Flow Control&#xff09;是计算机网络中确保数据流平稳传输的技术&#xff0c;旨在防止数据发送方发送过多数据&#xff0c;导致接收方的缓冲区溢出&#xff0c;进而造成数据丢失或传输失败。流量控制通常…...

Rust 所有权机制

Rust 所有权机制 本文示例代码地址 所有权是Rust中最独特的特性&#xff0c;它让Rust无需GC就可以保证内存安全。 什么是所有权&#xff1f; 所有权&#xff08;ownership&#xff09;是 Rust 用于如何管理内存的一组规则。所有程序都必须管理其运行时使用计算机内存的方式…...

Pwn VM writeup

国赛期间&#xff0c;做了一个很有意思的pwn题&#xff0c;顺便学了一下现在常见的pwn的板子题是什么样子的&#xff0c;这里做一下记录 Magic VM 题目逻辑 题目本身其实非常的有趣&#xff0c;它实现了一个简易流水线的功能&#xff0c;程序中包含四个结构体&#xff0c;其中三…...

LSTM(长短期记忆网络)详解

1️⃣ LSTM介绍 标准的RNN存在梯度消失和梯度爆炸问题&#xff0c;无法捕捉长期依赖关系。那么如何理解这个长期依赖关系呢&#xff1f; 例如&#xff0c;有一个语言模型基于先前的词来预测下一个词&#xff0c;我们有一句话 “the clouds are in the sky”&#xff0c;基于&…...

机器学习 贝叶斯公式

这是条件概率的计算公式 &#x1d443;(&#x1d434;|&#x1d435;)&#x1d443;(B|A)&#x1d443;(&#x1d434;)/&#x1d443;(&#x1d435;) 全概率公式 &#x1d443;(&#x1d435;)&#x1d443;(&#x1d435;|&#x1d434;)&#x1d443;(&#x1d434;)&am…...

Scala-注释、标识符、变量与常量-用法详解

Scala Scala-变量和数据类型-用法详解 Scala一、注释二、标识符规范三、变量和常量1. 变量&#xff08;var&#xff09;2. 常量&#xff08;val&#xff09;3. 类型推断与显式声明4. var 和 val 的区别5. Scala与Java对比Tips&#xff1a; 各位看客老爷万福金安&#xff0c;一键…...

大数据学习14之Scala面向对象--至简原则

1.类和对象 1.1基本概念 面向对象&#xff08;Object Oriented&#xff09;是一种编程思想&#xff0c;面向对象主要是把事物给对象化&#xff0c;包括其属性和行为。面向对象编程更贴近实际生活的思想&#xff0c;总体来说面向对象的底层还是面向过程&#xff0c;面向过程抽象…...

docker 安装之 windows安装

文章目录 1: 在Windows安装Docker报19044版本错误的时候&#xff0c;请大家下载4.24.1之前的版本&#xff08;含4.24.1&#xff09;2: Desktop-WSL kernel version too low3: docker-compose 安装 (v2.21.0) 1: 在Windows安装Docker报19044版本错误的时候&#xff0c;请大家下载…...

JS 实现游戏流畅移动与按键立即响应

AWSD 按键移动 <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title><style>.box1 {width: 400px;height: 400px;background: yellowgreen;margin: 0 auto;position: relative;}.box2 {width: 50px;height:…...

LabVIEW大数据处理

在物联网、工业4.0和科学实验中&#xff0c;大数据处理需求逐年上升。LabVIEW作为一款图形化编程语言&#xff0c;凭借其强大的数据采集和分析能力&#xff0c;广泛应用于实时数据处理和控制系统中。然而&#xff0c;在面对大数据处理时&#xff0c;LabVIEW也存在一些注意事项。…...

NVR录像机汇聚管理EasyNVR多品牌NVR管理工具视频汇聚技术在智慧安防监控中的应用与优势

随着信息技术的快速发展和数字化时代的到来&#xff0c;安防监控领域也在不断进行技术创新和突破。NVR管理平台EasyNVR作为视频汇聚技术的领先者&#xff0c;凭借其强大的视频处理、汇聚与融合能力&#xff0c;展现出了在安防监控领域巨大的应用潜力和价值。本文将详细介绍Easy…...

海思3403对RTSP进行目标检测

1.概述 主要功能是调过live555 testRTSPClient 简单封装的rtsp客户端库&#xff0c;拉取RTSP流&#xff0c;然后调过3403的VDEC模块进行解码&#xff0c;送个NPU进行目标检测&#xff0c;输出到hdmi&#xff0c;这样保证了开发没有sensor的时候可以识别其它摄像头的视频流&…...

Vue之插槽(slot)

插槽是vue中的一个非常强大且灵活的功能&#xff0c;在写组件时&#xff0c;可以为组件的使用者预留一些可以自定义内容的占位符。通过插槽&#xff0c;可以极大提高组件的客服用和灵活性。 插槽大体可以分为三类&#xff1a;默认插槽&#xff0c;具名插槽和作用域插槽。 下面…...

分布式服务高可用实现:复制

分布式服务高可用实现&#xff1a;复制 1. 为什么需要复制 我们可以考虑如下问题&#xff1a; 当数据量、读取或写入负载已经超过了当前服务器的处理能力&#xff0c;如何实现负载均衡&#xff1f;希望在单台服务器出现故障时仍能继续工作&#xff0c;这该如何实现&#xff…...

基于yolov8、yolov5的车型检测识别系统(含UI界面、训练好的模型、Python代码、数据集)

摘要&#xff1a;车型识别在交通管理、智能监控和车辆管理中起着至关重要的作用&#xff0c;不仅能帮助相关部门快速识别车辆类型&#xff0c;还为自动化交通监控提供了可靠的数据支撑。本文介绍了一款基于YOLOv8、YOLOv5等深度学习框架的车型识别模型&#xff0c;该模型使用了…...

机器学习—决定下一步做什么

现在已经看到了很多不同的学习算法&#xff0c;包括线性回归、逻辑回归甚至深度学习或神经网络。 关于如何构建机器学习系统的一些建议 假设你已经实现了正则化线性回归来预测房价&#xff0c;所以你有通常的学习算法的成本函数平方误差加上这个正则化项&#xff0c;但是如果…...

Java Optional详解:避免空指针异常的优雅方式

在 Java 编程中&#xff0c;空指针异常&#xff08;NullPointerException&#xff09;一直是困扰开发者的常见问题之一。为了更安全、优雅地处理可能为空的值&#xff0c;Java 8 引入了 Optional 类。Optional 提供了一种函数式的方式来表示一个值可能存在或不存在&#xff0c;…...