当前位置: 首页 > article >正文

【HarmonyOS NEXT】获取正式应用签名证书的签名信息

1. 背景

在接入微博SDK时,发现在微博开放平台中需要填写应用的签名信息。该签名信息需要填写2个,一个是debug【调试】证书对应的应用签名,一个是release【发布/线上】证书对应的应用签名。


debug环境下,我们可以通过微博提供的方法获取

new Utility().getSign(true).then(sign => { // true:代表使用appid校验  false: 代表使用证书fingerprint校验
      Utils.logger.debug("get sign: " + sign); 
})

或者使用这段代码获取到signatureInfo.appIdentifier,然后MD5,即可和上面微博提供的方法获取的值一致

import { bundleManager } from '@kit.AbilityKit'; 
import { hilog } from '@kit.PerformanceAnalysisKit'; 
import { BusinessError } from '@kit.BasicServicesKit'; 
 
let bundleFlags = bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_SIGNATURE_INFO; 
try { 
  bundleManager.getBundleInfoForSelf(bundleFlags).then((data) => { 
    hilog.info(0x0000, 'testTag', 'getBundleInfoForSelf successfully. Data: %{public}s', JSON.stringify(data)); 
    //data里可以获取到signatureInfo,即应用的签名证书信息 
  }).catch((err: BusinessError) => { 
    hilog.error(0x0000, 'testTag', 'getBundleInfoForSelf failed. Cause: %{public}s', err.message); 
  }); 
} catch (err) { 生成2048位RSA秘钥
  let message = (err as BusinessError).message; 
  hilog.error(0x0000, 'testTag', 'getBundleInfoForSelf failed: %{public}s', message); 
}

release 环境下,就很特别了,因为release证书打出来的包是无法直接安装在手机上的,上面那段代码总不能写到release包中,发布应用商店后再通过log查看吧 😒

2. 解决方案

直接用使用任意文本编辑器,打开 debug/release 证书的p7b文件,搜索certificate字段【debug是development-certificate,release是distribution-certificate】,将证书的内容拷贝存储为xxx.cer文件

注意,复制的文本内容需要将\n替换为回车

替换后的效果

验证提取的证书内容是否有效,可使用这个网站验证 https://www.ssleye.com/ssltool/cer_check.html

3. 通过keytool工具获取应用证书签名

keytool 一般在在DevEco Studio安装目录下的jbr/bin文件夹内,或者你可以通过搜索引擎搜索下载也可以

执行如下命令通过.cer文件获取证书指纹的SHA256值。

keytool -printcert -file xxx.cer

将证书指纹中SHA256的内容去掉冒号,即为最终要获得的签名指纹

SHA256:9A:9C:2C:D7:1F:B4:F3:85:1C:56:9D:19:FA:04:48:F9:AA:09:A8:A4:6D:D9:1F:F3:90:01:C0:30:08:78:11:A2

SHA256:9A9C2CD71FB4F3851C569D19FA0448F9AA09A8A46DD91FF39001C030087811A2

MD5之后的值:f0fbcdf1a52ef36f51833ebe01ec65e5

4. 验证手动获取的证书指纹和代码获取的是否一致

4.1 通过微博SDK提供的方法获取签名

f0fbcdf1a52ef36f51833ebe01ec65e5

这里通过微博SDK方法获取的签名和我们上面手动获取的前面是一致的

4.2 通过bundleManager.getBundleInfoForSelf 获取的签名信息

这里通过鸿蒙API方法获取的签名信息是和微博SDK以及我们上面手动获取的前面是一致的

5. 总结

通过上述的验证,通过手动提取p7b中的证书内容,在通过keytool,是可以拿到正式应用签名信息的。


http://www.kler.cn/a/555085.html

相关文章:

  • 【python】网页批量转PDF
  • 基于图扑 HT 可视化技术打造智慧地下采矿可视化方案
  • 【Python爬虫(29)】爬虫数据生命线:质量评估与监控全解
  • Linux高并发服务器开发 第十九天(线程 进程)
  • Embedding方法:从Word2Vec到ltem2Vec
  • 输入搜索、分组展示选项、下拉选取,el-select 实现:即输入关键字检索,返回分组选项,选取跳转到相应内容页 —— VUE 项目-全局模糊检索
  • 如何发起http的请求,在系统中集成
  • 深度学习-122-大语言模型LLM之基于langchian自定义国内联网查询工具并创建智能代理
  • 开源的 LLM 应用开发平台-Dify 部署和使用
  • Redis存在线程安全问题吗?
  • 250217-数据结构
  • Py2学习笔记
  • 基于开源Odoo模块、SKF Phoenix API与IMAX-8数采网关的资产密集型企业设备智慧运维实施方案
  • RIP路由协议的知识要点
  • GitCode 助力至善云学:构建智慧教育平台
  • 文 章 索 引
  • 23种设计模式 - 组合模式
  • armv7l
  • 基于cppzmq和MsgPack封装的Publisher Subscriber - 发布订阅模式
  • css之display:grid布局改块级元素布局