OpenHarmony开发实例:【配置应用签名信息】

devtools/2024/9/23 4:16:55/

使用真机设备运行和调试OpenHarmony应用前,需要对应用进行签名才能正常运行。该指导用于OpenHarmony应用的签名配置。配置应用签名信息的流程如下图所示。

zh-cn_image_0000001113808114

生成密钥和证书请求文件

OpenHarmony应用通过数字证书(.cer文件)和Profile文件(.p7b文件)来保证应用的完整性,需要通过DevEco Studio来生成密钥文件(.p12文件)和证书请求文件(.csr文件)。同时,也可以使用命令行工具的方式来生成密钥文件和证书请求文件。

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

  1. 在主菜单栏点击Build > Generate Key and CSR

    说明

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

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

    img

  3. Create Key Store窗口中,填写密钥库信息后,点击OK

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

    img

  4. Generate Key界面中,继续填写密钥信息后,点击Next

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

    img

  5. Generate CSR界面,选择密钥和设置CSR文件存储路径。

    img

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

    img

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

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

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

    img

  2. 切换到keytool工具所在路径,实际路径请根据DevEco Studio安装目录进行修改。

    img

  3. 执行如下命令,生成公私钥文件。例如,生成的密钥库名称为ide_demo_app.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:设置密钥的密码,请与storepass保持一致。

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

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

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

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

生成应用证书文件

使用[生成密钥和证书请求文件]中生成的证书请求文件,来生成应用签名所需的数字证书文件。生成方法如下:

进入DevEco Studio安装目录的 Sdk\toolchains\lib文件夹下(该SDK目录只能是OpenHarmony SDK,配置方法可参考配置OpenHarmony SDK),打开命令行工具,执行如下命令(如果keytool命令不能执行,请在系统环境变量中添加JDK的环境变量)。其中,只需要修改输入和输出即可快速生成证书文件,即修改 -infile指定证书请求文件csr文件路径, -outfile指定输出证书文件名及路径。

keytool -gencert -alias "OpenHarmony Application CA" -infile myApplication_ohos.csr -outfile myApplication_ohos.cer -keystore OpenHarmony.p12 -sigalg SHA384withECDSA -storepass 123456 -ext KeyUsage:"critical=digitalSignature" -validity 3650 -rfc

关于该命令的参数说明如下:

  • alias:用于签发证书的CA私钥别名,OpenHarmony社区CA私钥存于OpenHarmony.p12密钥库文件中,该参数不能修改。
  • infile:证书请求(CSR)文件的路径。
  • outfile:输出证书链文件名及路径。
  • keystore:签发证书的CA密钥库路径,OpenHarmony密钥库文件名为OpenHarmony.p12,文件在OpenHarmony SDK中 Sdk\toolchains\lib路径下,该参数不能修改。请注意,该OpenHarmony.p12文件并不是[生成密钥和证书请求文件]中生成的.p12文件。
  • sigalg:证书签名算法,该参数不能修改。
  • storepass:密钥库密码,密码为123456,该参数不能修改。
  • ext:证书扩展项,该参数不能修改。
  • validity:证书有效期,自定义天数。
  • rfc:输出文件格式指定,该参数不能修改。

生成应用Profile文件

鸿蒙开发>鸿蒙开发指导文档:gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md点击或者复制转到。

搜狗高速浏览器截图20240326151450.png

Profile文件包含OpenHarmony应用的包名、数字证书信息、描述应用允许申请的证书权限列表,以及允许应用调试的设备列表(如果应用类型为Release类型,则设备列表为空)等内容,每个应用包中均必须包含一个Profile文件。

进入 Sdk\toolchains\lib目录下,打开命令行工具,执行如下命令。

java -jar provisionsigtool.jar sign --in UnsgnedReleasedProfileTemplate.json --out myApplication_ohos_Provision.p7b --keystore OpenHarmony.p12 --storepass 123456 --alias "OpenHarmony Application Profile Release" --sigAlg SHA256withECDSA --cert OpenHarmonyProfileRelease.pem --validity 365 --developer-id ohosdeveloper --bundle-name 包名 --permission 受限权限名(可选) --permission 受限权限名(可选) --distribution-certificate myApplication_ohos.cer

关于该命令的参数说明如下:

  • provisionsigtool:Profile文件生成工具,文件在OpenHarmony SDK的 Sdk\toolchains\lib路径下。
  • in:Profile模板文件所在路径,文件在OpenHarmony SDK中 Sdk\toolchains\lib路径下,该参数不能修改。
  • out:输出的Profile文件名和路径。
  • keystore:签发证书的密钥库路径,OpenHarmony密钥库文件名为OpenHarmony.p12,文件在OpenHarmony SDK中 Sdk\toolchains\lib路径下,该参数不能修改。
  • storepass:密钥库密码,密码为123456,该参数不能修改。
  • alias:用于签名Profile私钥别名,OpenHarmony社区CA私钥存于OpenHarmony.p12密钥库文件中,该参数不能修改。
  • sigalg:证书签名算法,该参数不能修改。
  • cert:签名Profile的证书文件路径,文件在OpenHarmony SDK中 Sdk\toolchains\lib路径下,该参数不能修改。
  • validity:证书有效期,自定义天数。
  • developer-id:开发者标识符,自定义一个字符串。
  • bundle-name:填写应用包名。
  • permission:可选字段,如果不需要,则可以不用填写此字段;如果需要添加多个受限权限,则如示例所示重复输入。受限权限列表如下:ohos.permission.READ_CONTACTS、ohos.permission.WRITE_CONTACTS。
  • distribution-certificate:[生成应用证书文件]中生成的证书文件。

配置应用签名信息

在真机设备上调试前,需要使用到制作的私钥(.p12)文件、证书(.cer)文件和Profile(.p7b)文件对调试的模块进行签名。

打开 File > Project Structure,点击 Project > Signing Configs > debug窗口中,去除勾选“Automatically generate signing”,然后配置指定模块的调试签名信息。

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

zh-cn_image_0000001155643492

设置完签名信息后,点击 OK进行保存,然后可以在工程下的build.gradle中查看签名的配置信息。

zh-cn_image_0000001202722349

默认情况下,DevEco Studio编译hap包的类型为debug类型,如果需要编译release类型的hap包,请打开工程左下角的OhosBuild Variants,设置模块的编译构建类型为release。

zh-cn_image_0000001115066116

编译完成后,OpenHarmony应用的Hap包可以从工程的bulid目录下获取。

zh-cn_image_0000001163918627

鸿蒙Next核心技术分享

1、鸿蒙基础知识←《鸿蒙NEXT星河版开发学习文档》

2、鸿蒙ArkUI←《鸿蒙NEXT星河版开发学习文档》

3、鸿蒙进阶技术←《鸿蒙NEXT星河版开发学习文档》

 4、鸿蒙就业高级技能←《鸿蒙NEXT星河版开发学习文档》 

 5、鸿蒙多媒体技术←《鸿蒙NEXT星河版开发学习文档》 

6、鸿蒙南向驱动开发←《鸿蒙NEXT星河版开发学习文档》  

7、鸿蒙南向内核设备开发←《鸿蒙NEXT星河版开发学习文档》  

 8、鸿蒙系统>鸿蒙系统裁剪与移植←《鸿蒙NEXT星河版开发学习文档》  


http://www.ppmy.cn/devtools/8836.html

相关文章

深入了解MySQL中的SQL函数

深入了解MySQL中的SQL函数可以极大地提升数据处理的能力和灵活性。这些函数涵盖了从数学计算、字符串操作、日期时间处理到复杂的聚合和窗口函数。在这篇文章中,我们将详细讨论MySQL中的各种SQL函数,包括它们的用途、使用场景和一些高级技巧。 数学函数…

MLP-Mixer理解

重新回顾mlp范式,又不想读论文,于是: 佬文: https://www.zhihu.com/tardis/sogou/art/372642234

使用 Docker 部署 Draw.io 在线流程图系统

1)介绍 Draw.io GitHub:https://github.com/jgraph/drawio Draw.io 是一款开源的绘制流程图的工具,拥有大量免费素材和模板。程序本身支持中文在内的多国语言,创建的文档可以导出到多种网盘或本地。无论是创建流程图、组织结构图…

【通信原理笔记】【四】数字基带传输——4.1 数字基带信号

文章目录 前言一、数字信号二、数字基带信号波形2.1 码元波形2.2 相对码2.3 多电平码 总结 前言 从这一节开始介绍数字通信系统中的数字基带传输部分。与模拟通信系统相比,数字通信系统传输的对象是数字的离散信号而非连续的模拟信号,本节先学习什么是数…

ChatGPT及GIS、生物、地球、农业、气象、生态、环境科学领域案例

以ChatGPT、LLaMA、Gemini、DALLE、Midjourney、Stable Diffusion、星火大模型、文心一言、千问为代表AI大语言模型带来了新一波人工智能浪潮,可以面向科研选题、思维导图、数据清洗、统计分析、高级编程、代码调试、算法学习、论文检索、写作、翻译、润色、文献辅助…

c#创建安装windows服务

在C#中创建并安装Windows服务,通常需要以下几个步骤: 创建Windows服务项目编写服务逻辑编译服务项目安装服务启动和停止服务 下面是一个简单的步骤指南: 步骤 1: 创建Windows服务项目 在Visual Studio中,创建一个新的Windows服…

@CrossOrigin的使用

CrossOrigin的使用 1.使用场景2.用法3.示例3.1 标注在方法上3.2 标注在类上 3.属性配置 1.使用场景 前后端分离应用:当前端应用和后端服务部署在不同的域或端口上时,前端应用尝试向后端服务发起请求时,可能会遇到同源策略的限制。这时&#…

射频识别技术助力产品分拣:提升效率与准确性

射频识别技术助力产品分拣:提升效率与准确性 RFID技术在产品分拣中具有重要的应用,它利用射频信号进行非接触式的自动识别,能够高效、准确地完成产品分拣工作。 在产品分拣中,RFID技术的主要应用方式是在产品上粘贴RFID电子标签&…