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

news2024/11/25 0:18:40

针对应用/服务的签名,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.coloradmin.cn/o/1523799.html

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

相关文章

碳素光线疗法与中医

看得见的穴位碳素光线疗法 最近日本的医疗随着科学技术的发达,在基础研究、临床各领域取得了显著的发展。日本人的平均寿命比战前大幅延长,结核及其他疑难杂症、癌症等疾病也在逐渐被压制。其中,作为癌症的辅助疗法,日本癌症学会等…

【Docker】一文趣谈Docker

🏡浩泽学编程:个人主页 🔥 推荐专栏:《深入浅出SpringBoot》《java对AI的调用开发》 《RabbitMQ》《Spring》《SpringMVC》《项目实战》 🛸学无止境,不骄不躁,知行合一 文章目录 …

[MySQL]数据库基础

文章目录 1.连接服务器2.理解mysql3.初见数据库4.主流数据库5.服务器,数据库,表关系6.数据逻辑存储7.MySQL架构8.SQL分类9.存储引擎 1.连接服务器 mysql -h 127.0.0.1 -P 3306 -u root -p -h:指明登录部署mysql服务的主机。没有写 -h 127.0.…

Unity WebGL服务器标头的问题

目录 现象: 报错文本: 原因: 解决方案: 现象: 打包前,ProjectSetting 压缩选项设置为Brotli, 将打包的WebGL部署到阿里云OSS环境后,运行弹框提示错误. 报错文本: Unable to parse Build/WebGL.framework.js.br! This canha…

【LabVIEW FPGA入门】单周期定时循环

单周期定时循环详解 单周期定时环路是FPGA编程中最强大的结构之一。单周期定时循环中的代码更加优化,在FPGA上占用更少的空间,并且比标准While循环中的相同代码执行得更快。单周期定时环路将使能链从环路中移除,以节省FPGA上的空间。…

491.非递减子序列

这是一个Java程序&#xff0c;实现了一个名为Solution的类&#xff0c;该类用于查找给定整数数组中所有严格递增子序列。以下是代码的逐行注释&#xff1a; // 定义一个解决方案类 class Solution {// 初始化结果集&#xff0c;用于存储满足条件的所有严格递增子序列List<L…

第七节:Vben Admin权限-后端获取路由和菜单

系列文章目录 第一节:Vben Admin介绍和初次运行 第二节:Vben Admin 登录逻辑梳理和对接后端准备 第三节:Vben Admin登录对接后端login接口 第四节:Vben Admin登录对接后端getUserInfo接口 第五节:Vben Admin权限-前端控制方式 第六节:Vben Admin权限-后端控制方式 第七节…

nginx做静态代理方式

改配置文件 server {listen 8899;server_name localhost;location / {root html;index index.html index.htm;} } 生成页面代码 例子 GetMapping("createIndex")public Result createIndex() {//获取后台存储数据Result result productFeignClient.getB…

5G与SD-WAN的结合为企业网络注入新活力

5G作为SD-WAN的基础网络&#xff0c;具备超大带宽、超低延迟、海量连接能力&#xff0c;为企业各类业务场景提供了理想的支持&#xff0c;尤其对于对时延极为敏感的工业控制、互动应用、高带宽视频、大规模物联网应用等有着显著的推动作用。 通过与5G的融合&#xff0c;SD-WAN在…

Qt/C++监控推流设备推流/延迟极低/实时性极高/rtsp/rtmp推流/hls/flv/webrtc拉流/调整分辨率降低带宽

一、前言 算下来这个推流的项目作品写了有四年多了&#xff0c;最初第一个版本只有文件点播的功能&#xff0c;用的纯QTcpSocket通信实现&#xff0c;属于比较简单的功能。由于文件点播只支持文件形式的推流&#xff0c;不支持网络流或者本地设备采集&#xff0c;所以迫切需要…

不成功人士的7个习惯

你犹豫不决 你在做决定时犹豫不决&#xff0c;即使你辗转反侧的做了决策&#xff0c;落实到执行的时候又开始打退堂鼓&#xff0c;这种决策机制会产生一种不好的惯性&#xff0c;让你没办法做到局部最优&#xff0c;长期的随机决策让你离成功越来越远。 你缺乏清晰度 你对于…

二叉树的初步学习和顺序结构实现

当我们学完顺序表、链表、栈和队列的时候&#xff0c;我们就要开始学习树了。树对于以后的学习有非常大的帮助&#xff0c;尤其是排序。好了&#xff0c;开始我们的学习吧。 1.树的概念及结构 1.1树的结构 树结构是一种非线性结构。它是由n&#xff08;n>0&#xff09;个…

蓝桥杯每日一题——棋盘

问题描述 小蓝拥有 n xn 大小的棋盘&#xff0c;一开始棋盘上全都是白子。小蓝进行了 m 次操作&#xff0c;每次操作会将棋盘上某个范围内的所有棋子的颜色取反(也就是白色棋子变为黑色&#xff0c;黑色棋子变为白色)请输出所有操作做完后棋盘上每个棋子的颜色。输入格式 输入的…

面向对象编程第三式: 多态 (Java篇)

本篇会加入个人的所谓‘鱼式疯言’ ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. &#x1f92d;&#x1f92d;&#x1f92d;可能说的不是那么严谨.但小编初心是能让更多人…

2024.3.17每日一题

LeetCode 最小高度树 题目链接&#xff1a;310. 最小高度树 - 力扣&#xff08;LeetCode&#xff09; 题目描述 树是一个无向图&#xff0c;其中任何两个顶点只通过一条路径连接。 换句话说&#xff0c;一个任何没有简单环路的连通图都是一棵树。 给你一棵包含 n 个节点的…

vue3 el-form中嵌套el-tabale 对输入动态校验

简单案例 <el-form :model"Form" :rules"rules" ref"FormRef" class"formDiv"><el-table :data"Form.copyWriters" style"width: 100%"><el-table-column label"文案链接"><temp…

TPU浅谈

前言 大家好&#xff0c;我是jiantaoyab&#xff0c;上篇文章讲了FPGA和ASIC&#xff0c;讲解了 FPGA 如何实现通过“软件”来控制“硬件”&#xff0c;以及我们可以进一步把 FPGA 设计出来的电路变成一块 ASIC 芯片。今天我们来看看TPU。大家可以点击这篇文章TPU深入了解TPU。…

BUUCTF-----[CISCN 2019 初赛]Love Math

<?php error_reporting(0); //听说你很喜欢数学&#xff0c;不知道你是否爱它胜过爱flag if(!isset($_GET[c])){show_source(__FILE__); }else{//例子 c20-1$content $_GET[c];if (strlen($content) > 80) {die("太长了不会算");}$blacklist [ , \t, \r, \n…

如何在webapp中手动部署

前言&#xff1a;这个有不知道怎么下载Tomcat的可以看我这篇博客的前面&#xff0c;有相关链接&#xff0c;下载好后我那边也有如何运行成功的 在idea中配置tomcat服务器&#xff0c;部署一个项目-CSDN博客 接下来进入这篇博客的正题&#xff01;怎么手动部署 先找到我们下载…

基于SpringBoot+Vue的个人云盘管理系统的设计与实现(源码+部署说明+演示视频+源码介绍)

您好&#xff0c;我是码农飞哥&#xff08;wei158556&#xff09;&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。&#x1f4aa;&#x1f3fb; 1. Python基础专栏&#xff0c;基础知识一网打尽&#xff0c;9.9元买不了吃亏&#xff0c;买不了上当。 Python从入门到精通…