暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

如何配置OpenHarmony应用签名信息?

鸿蒙技术社区 2022-03-02
1094

开发 OpenHarmony 应用的第一步就是配置环境,如果你需要使用开发板(真机)进行调试,那就免不了配置签名信息,下面我们聊下基于 OpenHarmony 应用开发的签名配置。


流程


OpenHarmony 应用的第一步就是配置环境,签名流程。使用真机设备运行和调试 OpenHarmony 应用前,需要对应用进行签名才能正常运行。


配置应用签名信息的流程如下图所示:

配置签名认证时需要密钥文件(.p12 文件)和证书请求文件(.csr 文件),并根据密钥和证书请求文件生成数字证书(.cer 文件)和 Profile 文件(.p7b 文件),Profile 文件是用来保证应用的完整性。


如何生成应用签名


①生成密钥和证书请求文件


说明:通过 DevEco Studio 生成生成密钥和证书请求文件。


在主菜单栏点击 Build > Generate Keyand CSR。创建 Key Store File:

签名文件其他配置:

认证请求文件:

点击“Finish”后可以生成认证请求文件,可以查看对应的文件夹,如下图:

使用命令行工具生成应用证书文件,使用生成密钥和证书请求文件中生成的证书请求文件,来生成应用签名所需的数字证书文件。


生成方法如下:进入 DevEco Studio 安装目录 .\SDK\toolchains\lib,执行以下命令:

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


其中,只需要修改输入和输出即可快速生成证书文件,即修改 -infile 指定证书请求文件 csr 文件路径,-outfile 指定输出证书文件名及路径。


关于该命令的参数说明如下:
  • 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:证书有效期,自定义天数,命令中设置了 3650 天。

  • rfc:输出文件格式指定,该参数不能修改。


你可能遇到下面的问题:


问题 1:keystore OpenHarmony.p12 在 Sdk\toolchains\lib 下没有对应的文件?

问题分析:OpenHarmony SDK 与 HarmonyOS SDK 不同,你确认在 DevEco Studio 的 Settings 中是否把两个 SDK 的目录配置为相同,建议配置成不同的路径,用于下载或更新 SDK。

解决方案 1:OpenHarmony SDK、HarmonyOS SDK 存放到不同的目录下,再下载和更新 SDK。


查看两个 SDK\toolchains\lib 下的文件区别,如下:

解决方案 2:不推荐,手动下载 OpenHarmony SDK,解压相关的文件(OpenHarmony.p12)到指定目录(Sdk\toolchains\lib)下即可。


查看解决方案:《配置 OpenHarmony 应用签名信息里的几个文件没有》

https://gitee.com/openharmony/docs/issues/I3U9AX


SDK-2.0-Cancry 下载地址:

https://mirror.iscas.ac.cn/OpenHarmony/sdk/OpenHarmony-SDK-2.0-Canary.7z


重新执行生成证书文件命令,如下:

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


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

java -jar provisionsigtool.jar sign --in UnsgnedReleasedProfileTemplate.json --out OH_App_debug.p7b --keystore OpenHarmony.p12 --storepass 123456 --alias "OpenHarmony Application Profile Release--sigAlg SHA256withECDSA --cert OpenHarmonyProfileRelease.pem --validity 365 --developer-id xxx --bundle-name xxx.myAppDemo --permission ohos.permission.READ_CONTACTS --permission ohos.permission.WRITE_CONTACTS --distribution-certificate xxx\app_debug.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:生成应用证书文件中生成的证书文件。


执行命令后,就可以生成应用 Profile 文件,如下:

真机调试


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


①配置签名


在 DevEco Studio 的菜单上打开 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。

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

②编译打包 APP


配置签名后,可以通过 Build->Build Hap(s)/APP(s)->Build Hap(s),编译完成后,OpenHarmony 应用的 Hap 包可以从工程的 bulid 目录下获取。


如下图:

扫码报名HarmonyOS创新大赛城市交流会



👇点击关注鸿蒙技术社区👇
了解鸿蒙一手资讯

求分享

求点赞

求在看

文章转载自鸿蒙技术社区,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论