在鸿蒙应用开发过程中,应用签名是确保应用来源可信、数据完整性以及用户安全的重要环节。生成有效的签名能够让鸿蒙系统识别应用的开发者身份,保障应用在设备上安全运行。以下为您详细介绍鸿蒙 APP 签名的生成方法。
一、生成开发者签名证书
- 通过 DevEco Studio 生成公私钥:
-
- 打开华为的 DevEco Studio 开发工具。如果尚未安装,需从华为官方开发者网站下载并完成安装。
-
- 在 DevEco Studio 中,通过特定功能直接生成包含开发者公私钥的 p12 文件。具体操作路径可能因版本不同而略有差异,一般可在相关的证书管理或项目配置选项中找到生成公私钥的功能入口。
-
- 生成的 p12 文件是标准的 PKCS#12 格式(定义在 RFC 7292),用于存储一组或多组公钥证书(包含公钥)及其对应的私钥,使用 ASN.1 来定义数据结构,并采用 DER 编码规则将这些结构编码为二进制形式。例如,生成一个名为 my.p12 的文件。
- 解析 p12 文件:
-
- 可以借助 openssl 命令对 p12 文件进行解析。例如,使用openssl asn1parse -in my.p12 -inform DER命令来解码 DER 并解析 ASN.1 结构;使用openssl pkcs12 -info -in my.p12命令可查看公钥证书和私钥信息。
-
- 公钥证书遵循 Privacy Enhanced Mail(PEM)协议(定义在 RFC 7468),以文本文件形式呈现。可通过openssl x509 -in my.pem -text -noout命令(假设已将公钥证书保存为 my.pem 文件)解析具体公钥证书信息。公钥信息包含公钥算法、公钥位数、公钥值等结构化数据,为了标识公钥唯一性,常用公钥指纹(Public Key Pin),计算方式是对 DER 编码的公钥进行 SHA – 256 计算并进行 Base64 编码。
-
- 在 X509 扩展字段中,Subject Key Identifier(SKID)字段用于证书持有者标识,但由于其计算方式不唯一,攻击者可能伪造证书绕过公钥校验,因此 SKID 一般用于证书链中父子关系查找,而非公钥唯一性标识。与之对应的,Authority Key Identifier(AKID)字段用于标识证书颁发者,在验证证书链时,程序会检查每个证书的 AKID 和上一个证书的 SKID 是否匹配,以确保形成连续信任链。
- 提取公钥:使用openssl x509 -in my.pem -pubkey -noout命令,可从 PEM 协议的公钥证书中提取 PEM 协议的公钥。例如,执行该命令后,输出如下:
—–BEGIN PUBLIC KEY—–
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE95zFs5cFHauzIYEuuw3g2R75a1ir
qEW0JWP9qAKkyVCizN0nnzcn/Fo5oeSZR1iPUnJvjlnpNvZL9BcQbLqa7g==
—–END PUBLIC KEY—–
二、生成 Profile 文件
- 创建项目与应用:进入 AppGallery Connect 官网,使用华为帐号登录后创建一个鸿蒙项目,并在项目下创建应用。在创建应用过程中,需准确填写相关信息,如应用名称、包名等。其中,包名需与项目配置文件(config.json)中的 bundleName 一致。
- 添加 HarmonyAppProvision 信息:在【HarmonyOS 应用】菜单中添加 HarmonyAppProvision 信息。确保信息准确无误,此信息将用于后续生成 Profile 文件等操作。
三、生成签名的 App
- 配置项目签名信息:在鸿蒙代码开发编辑器(如 DevEco Studio)中,找到菜单栏中的 File 选项,打开子选项 Project Structure。进入 Project Structure 界面后,点击左侧的【project】选项,在【signing Configs】子界面中点击【try/catch】按钮,让其自动获取相关签名信息。设置完成后,可在项目配置文件 build.gradle 中查看到相关签名内容。
- 生成签名 App:完成上述步骤后,在 DevEco Studio 中进行相关操作,即可生成签名的 App。具体操作通常在构建或打包相关的功能选项中,根据系统提示完成签名 App 的生成过程。生成的签名 App 可用于真机调试、提交至应用市场发布等。
通过以上步骤,您可以顺利完成鸿蒙 APP 签名的生成。在实际操作过程中,务必严格按照华为官方文档和工具的指引进行,以确保签名生成的准确性和安全性。若在生成签名过程中遇到问题,可参考华为官方开发者文档或在华为开发者社区寻求帮助。