1、鸿蒙学习-为应用/服务进行签名

针对应用/服务的签名,DevEco Studio为开发者提供了自动签名方案,帮助开发者高效进行调试。也可选择手动方式对应用/服务进行签名,如果使用了需要ACL的权限,需采用手动方式进行签名。

自动签名

说明

使用自动签名前,请确保本地系统时间与北京时间(UTC/GMT +8.00)保持一致。如果不一致,将导致签名失败。

1、连接真机设备,确保DevEco Studio与真机设备已连接,真机连接成功后如下图所示:

说明

如果同时连接多个设备,则使用自动化签名时,会同时将这多个设备的信息写到证书文件中。

2、进入 File > Project Structure > Project > Signing Configs界面,勾选”Automatically generate signature“(如果是API 8和9工程,需同时勾选”Support HarmonyOS“),即可完成签名。如果未登录,请先单击Sign In进行登录,然后自动完成签名

 签名完成后,如下图所示:

手动签名

HarmonyOS应用/服务通过数字证书(.cer文件)和 Profile文件(.p7b文件)来保证应用/服务的完整性。在申请数字证书和Profile文件前,首先要通过DevEco Studio或命令行工具来生成密钥(存储在格式为.p12的密钥库文件中)和证书请求文件(.csr文件)。然后,申请调试数字证书和调试Profile文件。最后,将密钥(.p12)文件、数字证书(.cer)文件和Profile(.p7b)文件配置到工程中。

基本概念

  • 密钥:格式为.p12,包含非对称加密中使用的公钥和私钥,存储在密钥库文件中,公钥和私钥对用于数字签名和验证。
  • 证书请求文件:格式为.csr,全称为Certificate Signing Request,包含密钥中对中的公钥和公共名称、组织名称、组织单位等信息,用于向AppGallery Connect申请数字证书
  • 数字证书:格式为.cer,由华为AppGallery Connect颁发
  • Profile文件:格式为.p7b,包含HarmonyOS 应用/服务的包名、数字证书信息、描述应用/服务允许申请的证书权限列表,以及允许应用/服务调试的设备列表(如果应用/服务类型为Release类型,则设备列表为空)等内容,每个应用/服务包中必须包含一个Profile文件

生成密钥和证书请求文件

使用DevEco Studio生成密钥和证书请求文件

1、在主菜单栏单击Build > Generate Key and CSR。

说明

如果本地已有对应的密钥,无需新生成密钥,可以在GenerateKey界面中单击下方的Skip跳过密钥生成过程,直接使用已有密钥生成证书请求文件。

2、在Key Store File中,可以单击 Choose Existing选择已有的密钥文件(存储有密钥的.p12文件) ;如果没有密钥库文件,单击New 进行创建。下面以新创建密钥库文件为例进行说明。

3、在Create Key Store窗口中 ,填写密钥库信息后,单击OK。

  • Key Store File:设置密钥库文件存储路径,并填写p12文件名。
  • Password:设置密钥库密码,必须由大写字母、小写字母、数字和特殊符号中的两种以上字符的组合,长度至少为8位。请记住该密码,后续签名配置需要使用
  • Confirm Password:再次输入密钥库密码

4、在Generate Key and CSR 界面中,继续填写密钥信息后,单击Next。

  • Alias:密钥的别名信息,用于标识密钥名称。请记住该别名,后续签名配置需要使用。
  • Password:密钥对应的密码,与密钥库密码保持一致,无需手动输入。
  • Validity:证书有效期,建议设置为25年及以上,覆盖应用/服务的完整生命周期
  • Certificate:输入证书基本信息,如组织、城市或地区、国家码等。

5、在Generate Key and CSR界面,设置CSR文件存储路径和CSR文件名

6、单击OK,创建CSR文件成功,可以在存储路径下获取生成的密钥库文件(.p12)和证书请求文件(.csr)。

使用命令行工具生成证书请求文件

使用Open JDK携带的Keytool工具生成证书请求文件。

1、使用管理员身份运行命令行工具

2、切换到keytool工具所在路径,路径为DevEco Studio安装目录下的jbr\bin目录。

3、执行如下命令,生成公钥文件、例如,生成的密钥库名称为idedemokey.p12,存储到D盘根目录下。

keytool -genkeypair -alias "ide_demo_app" -keyalg EC -sigalg SHA256withECDSA -dname "C=CN,O=HUAWEI,OU=HUAWEI IDE,CN=ide_demo_app"  -keystore d:\\idedemokey.p12 -storetype pkcs12 -validity 9125 -storepass 123456Abc -keypass 123456Abc

生成公私钥文件的参数说明如下:

说明

请记录下alias、storepass和keypass的值,在后续手动配置签名信息操作会使用到

  • alias:密钥的别名信息,用于标识密钥名称
  • sigalg:签名算法,固定为SHA256withECDSA
  • dname:按照操作界面提示进行输入。
    • C:国家/地区代码,如CN。
    • O:组织名称,如HUAWEI。
    • OU:组织单位名称,如HUAWEI IDE。
    • CN:名字与姓氏,建议与别名一致。
  • validity:证书有效期,建议设置为9125(25年)。
  • storepass:设置密钥库密码,必须由大写字母、小写字母、数字和特殊符号中的两种或两种以上字符组合,长度至少为8位。请记住该密码,后续签名配置需要使用。
  • keypass:设置密钥的Miami,请与storepass保持一致

4、执行如下命令,执行后需要输入storepass密码,生成证书请求文件,后缀格式为.csr。

keytool -certreq -alias "ide_demo_app" -keystore d:\\idedemokey.p12 -storetype pkcs12 -file d:\\idedemokey.csr

生成证书请求文件的参数说明如下:

  • alias:与上一步骤中输入的alias保持一致。
  • file:生成的证书请求文件名称,后缀为.csr。

申请调试证书和调试Profile文件

通过生成的证书请求文件,向AppGallery Connect 申请调试证书和Profile文件,操作如下:

  • 创建HarmonyOS应用/服务:在AppGallery Connect项目中,创建一个HarmonyOS 应用/服务,用于调试证书和Profile文件申请,具体请参考创建HarmonyOS应用。
  • 申请调试证书和Profile文件:在AppGallery Connect中申请、下载调试证书和Profile文件,具体请参考申请调试证书和Profile文件。

手动配置签名信息

在DevEco Studio中配置密钥(.p12)文件、申请的调试证书(.cer)文件和调试Profile(.p7b)文件。

在File > Project Structure > Project > Signing Configs窗口中,去勾选”Automatically generate signature“(API 8和9工程请勾选”support HarmonyOS“),然后配置工程的签名信息。

  • Store File:选择密钥库文件,文件后缀为.p12,该文件为生成密钥和证书请求文件中生成的.p12文件。
  • Store Password:输入密钥库密码,该密码与生成密钥和证书请求文件中填写的密钥库密码保持一致
  • Key Alias:输入密钥的别名信息,与生成密钥和证书请求文件中填写的别名保持一致
  • Key Password:输入密钥的密码,与生成密钥和证书请求文件中填写的Store Password保持一致
  • Sign Alg:签名算法,固定为SHA256withECDSA。
  • Profile File:选择申请调试证书和调试Profile文件中生成的Profile文件,文件后缀为.p7b
  • CertPath File:选择申请调试证书和调试Profile文件中生成的数字证书文件,文件后缀为.cer。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/758438.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

闭包机制的底层实现原理

说明:此次分享不涉及ES6的let,const,块级作用域,这些其实都是对本次分享内容的扩展。 闭包的重要性 JS的内功心法,闭包是JavaScript中非常重要的核心概念,关系着JS里很多核心的机制,理解了它,很多问题都会迎刃而解,不理解闭包用JS永远像隔着一层窗户纸。 前端发展日新…

【MySQL】学习和总结使用列子查询查询员工工资信息

🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​💫个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-5odctDvQ0AHJJc1C {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…

中国(京津冀)太阳能光伏推进大会暨展览会

中国(京津冀)太阳能光伏推进大会暨展览会是一个旨在促进太阳能光伏产业的发展的重要活动。该活动旨在加大对太阳能光伏的投资和支持,推动太阳能光伏技术的创新和应用,促进太阳能光伏产业的规模化发展。 此次大会暨展览会将为太阳能光伏行业相关企业提供一…

【Linux】Linux基本开发工具(yum) (vi/vim)的使用

本文章内容: 学习yum工具,进行软件安装掌握vim编辑器使用 Linux 软件包管理器 yum 什么是软件包 在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序.但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好, 做成…

es 聚合操作(一)

前言 Elasticsearch除搜索以外,提供了针对ES 数据进行统计分析的功能。聚合(aggregations)可以让我们极其方便的实现对数据的统计、分析、运算。例如: 衣服品牌的受欢迎程度这些衣服的平均价格、最高价格、最低价格这些衣服的每天、每月销量如何 使用…

产品推荐 | 基于Xilinx Zynq UltraScale+打造的仙女座 Andromeda FPGA核心板

1、产品概述 仙女座Andromeda XZU65片上系统(SoC)核心板通过结合高端Xilinx Zynq UltraScale™ MPSoC系列芯片和高速DDR4 ECC SDRAM、eMMC flash、双QSPI flash、双Gigabit Ethernet PHY、USB 3.0形成了一个完整的、功能强大的嵌入式处理系统。得益于大…

Rhino与Revit API之间的转换

你好,我是九哥~ 最近发现Rhino.Inside.Revit的API手册更新了,终于可以开心的写RIR代码了,小伙伴快去试试吧,地址如下: https://www.rhino3d.com/inside/revit/1.0/reference/rir-api 今天我们先来聊聊 Rhino 与 Rev…

华为ensp中rip动态路由协议原理及配置命令(详解)

CSDN 成就一亿技术人! 作者主页:点击! ENSP专栏:点击! CSDN 成就一亿技术人! ————前言————— RIP(Routing Information Protocol,路由信息协议)是一种距离矢…

xss.pwnfunction(DOM型XSS)靶场

环境进入该网站 Challenges (pwnfunction.com) 第一关&#xff1a;Ma Spaghet! 源码&#xff1a; <!-- Challenge --> <h2 id"spaghet"></h2> <script>spaghet.innerHTML (new URL(location).searchParams.get(somebody) || "Somebo…

YOLO_you only look once

前言 计算机图形学的课程即将结束&#xff0c;我需要提交一份关于YOLO模型的学习报告。在这段时间里&#xff0c;我对YOLO进行了深入的学习和研究&#xff0c;并记录下了我的学习过程和心得体会。本文将详细介绍YOLO模型的原理、优缺点以及应用领域&#xff0c;希望能够为后续…

css 如何获取分辨率(使用@media查询)

在CSS中&#xff0c;可以使用media查询来应对不同的屏幕分辨率。例如&#xff0c;您可以为不同的屏幕宽度设置不同的样式规则。 /* 针对屏幕宽度小于600px的样式 */ media screen and (max-width: 599px) {body {background-color: lightblue;} }/* 针对屏幕宽度大于或等于600…

spring整合Sentinel

安装sentinel&#xff1a; 执行命令; java -jar sentinel-dashboard-1.8.6.jar 注:sentinel的默认端口为8080&#xff0c;容易出现tomcat的冲突。 当端口冲突&#xff0c;可以使用该指令修改sentinel的端口 默认账号和密码都为sentinel Springcloud整合sentinel&#xff1a;…

首个业内DNA存储技术规范发布

在DNA数据存储的检索过程中&#xff0c;采用了三个输入对应一个输出逻辑实现的算法模式来生成数据表示的模式。这一算法模式的设计是为了有效编码和解码存储在DNA分子上的信息。 其中提到的“扰动比例”δ(n)是一个关键概念&#xff0c;它衡量的是在总的细胞数目&#xff08;此…

UE4_官方动画内容示例1.2_动画蓝图——使用蓝图告知Actor播放动画

展示了两个示例&#xff1a;在其中一个示例中&#xff0c;使用蓝图告知Actor播放动画&#xff0c;在另外一个示例中&#xff0c;展示了告知Actor播放动画的动画蓝图&#xff08;例如&#xff0c;此示例展示了如何将变量从蓝图传递给动画蓝图&#xff0c;并演示了如何将现有姿势…

【LabVIEW FPGA入门】插值、输出线性波形

概述 NI 的可重配置 I/O (RIO) 硬件使开发人员能够创建自定义硬件&#xff0c;以在坚固耐用、高性能和模块化架构中执行许多任务&#xff0c;而无需了解低级 EDA 工具或硬件设计。使用 RIO 硬件轻松实现的此类任务之一是模拟波形生成。本教程介绍了使用 CompactRIO 硬件和 LabV…

【Unity】Plastic云同步总是password error

【背景】 Plastic是Unity的项目版本控制功能&#xff0c;可以方便在多个地点同步项目进度。原本用得挺爽的&#xff0c;结果今天遇到糟心事&#xff0c;明明Hub也正常登着&#xff0c;可Plastic的一个update的dll就是不停反复运行并报Password invalid。 【问题分析】 听说I…

简易版 RPC 框架实现 2.0 -netty实现

这一篇理解如果有难度&#xff0c;可能对netty不是很理解&#xff0c; 可以关注我netty专栏&#xff0c;还有另外一篇&#xff1a; 用 Netty 自己实现简单的RPC&#xff0c; 这一篇是学习netty的时候写的&#xff0c;更倾向于分析netty相关的知识&#xff0c; 今天我是学习dubb…

【每日算法】理论:常见AIGC模型; 刷题:力扣单调栈

上期文章 【每日算法】理论&#xff1a;生成模型基础&#xff1b; 刷题&#xff1a;力扣单调栈 文章目录 上期文章一、上期问题二、理论问题1、stable diffusion模型的网络架构2、T5的网络架构&#xff08;Text-To-Text Transfer Transformer模型&#xff09;3、SDXL模型4、DA…

基于FPGA的光纤通信系统的实现的优化技巧与方法

逻辑电路基本框架回顾 跨时钟域同步技术 读写操作相互独立时钟域 A 和 B 不需要一致的相位由专门逻辑控制读写操作的切换 高速数据的乒乓缓存技术