HarmonyOS 鸿蒙Next 如何通过 bundleInfo.signatureInfo.fingerprint 来校验签名证书的指纹信息
HarmonyOS 鸿蒙Next 如何通过 bundleInfo.signatureInfo.fingerprint 来校验签名证书的指纹信息
1、使用自签名对应用进行打包
应用使用 /Users/xxx/.ohos/config/default_foundation_0qa1UPxFopL7gjX4eEVg5vSL4TjZSJuGbFQ3pc5uWKo=.cer 证书签名
使用下面代码打印包签名信息 console.log(‘SHA-256’, data.signatureInfo.fingerprint) 获取到应用的签名证书信息的是: 6192D18CB281C3223033BC964A49CEE84BFA495591BB5EA4D2A6CC8CB4D592F7
let bundleFlags = bundleManager.BundleFlag.GET_BUNDLE_INFO_DEFAULT;
try {
bundleManager.getBundleInfoForSelf(bundleFlags).then((data) => {
hilog.info(0x0000, ‘testTag’, ‘getBundleInfoForSelf successfully. Data: %{public}s’, JSON.stringify(data));
//data里可以获取到signatureInfo,即应用的签名证书信息
console.log(‘SHA-256’, data.signatureInfo.fingerprint)
}).catch((err: BusinessError) => {
hilog.error(0x0000, ‘testTag’, ‘getBundleInfoForSelf failed. Cause: %{public}s’, err.message);
});
} catch (err) {
let message = (err as BusinessError).message;
hilog.error(0x0000, ‘testTag’, ‘getBundleInfoForSelf failed: %{public}s’, message);
}
在mac上使用命令行查看签名证书 .cer 文件的 sha256 值
> sha256sum /Users/xxx/.ohos/config/default_foundation_0qa1UPxFopL7gjX4eEVg5vSL4TjZSJuGbFQ3pc5uWKo=.cer
输出结果:6d9119ce95dfcc9b5a113c598d7f46f104edb99f06472ff8056eedb2c8b2f598
问题:代码里面获取的应用的签名证书信息 和 签名证书 .cer 文件的sha256值,服务端需要验证包签名信息,但两者并不相等,请问如何做包签名验证?
在HarmonyOS(鸿蒙)系统中,通过bundleInfo.signatureInfo.fingerprint
来校验签名证书的指纹信息,是确保应用完整性和来源可信的重要手段。以下是一些关键步骤:
-
获取签名信息:
- 在鸿蒙系统中,应用的签名信息通常包含在签名证书中。
- 开发者需要确保签名证书的有效性,并正确配置在应用中。
-
访问bundleInfo.signatureInfo:
- 应用在运行时,可以通过系统API接口访问
bundleInfo
对象。 signatureInfo
是bundleInfo
的一个属性,包含了签名的详细信息。fingerprint
则是signatureInfo
中的一个字段,代表了签名证书的指纹信息。
- 应用在运行时,可以通过系统API接口访问
-
校验指纹信息:
- 开发者可以将获取到的指纹信息与预期的指纹信息进行比对。
- 如果两者匹配,则说明签名证书是有效的,应用来源可信。
请注意,直接访问和修改系统敏感信息可能违反操作系统的安全策略和用户协议。如果在实际操作中遇到问题,建议参考鸿蒙系统的官方文档或联系华为开发者支持以获取更具体的帮助。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html 。