APP备案如何获取公钥和证书指纹
================

#### 问题现象

移动端应用在各大平台使用云资源时，需要在对应的平台进行应用备案，平台会要求提供应用对应的公钥和证书md5指纹的信息。示例如下：

![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/6b/v3/qgEnFkzRR_yChPhLUwteNg/zh-cn_image_0000002628609894.png?HW-CC-KV=V1&HW-CC-Date=20260709T134201Z&HW-CC-Expire=86400&HW-CC-Sign=C7B7AA061F9792DC7F419161643712C0667B5ED49CC0A08F96AED8AC1A4DD936 "点击放大")

#### 背景知识

证书是由AppGallery Connect颁发的数字证书，用于验证应用的身份和签名。通过证书，验证应用身份，可以确保应用由合法开发者发布；对应用签名，可以确保应用的完整性和来源的可靠性。证书格式为.cer，包含公钥、证书指纹（即证书的摘要信息）等信息。

#### 解决方案

1.  登录AppGallery Connect，点击“证书、APP ID和Profile”，在页面左侧点击“证书”，下载需要备案的HarmonyOS应用的发布证书。
    
    ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/25/v3/l2JXGW8IRi62kajvO8bxeA/zh-cn_image_0000002658969109.png?HW-CC-KV=V1&HW-CC-Date=20260709T134201Z&HW-CC-Expire=86400&HW-CC-Sign=EAFBA55719CD4F0AF1F347347CF6430A60B8605C45C6CFF82C843176B3778B8A "点击放大")
    
2.  使用文本编辑器（如记事本）打开已下载的证书，删除前两段证书（根证书和中间证书），只保留最后一段证书（叶子证书），点击保存。
3.  双击打开已保存的证书，点击“详细信息-公钥”，获取APP的公钥信息。
    
    ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/1b/v3/ImwWqkliT1SDYzSdm-d7Jw/zh-cn_image_0000002658849157.png?HW-CC-KV=V1&HW-CC-Date=20260709T134201Z&HW-CC-Expire=86400&HW-CC-Sign=328D0EF6BC96C6F50B5BF53D9A2BD62DC08B46AF019FA824D783962AFA71D0EE "点击放大")
    
4.  双击打开已保存的证书点击“详细信息-指纹”，获取APP的指纹信息。
    
    ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/c2/v3/0WDfVq8xROiwBVn7NPrbsw/zh-cn_image_0000002628769790.png?HW-CC-KV=V1&HW-CC-Date=20260709T134201Z&HW-CC-Expire=86400&HW-CC-Sign=B100306D566845ACCC3730A1592BCF087D98F744DCE0834D0BA8566EBB4AC7B2 "点击放大")
    
    ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/1f/v3/9BC9Nw8iRVqwVWghT03j0w/notice_3.0-zh-cn.png?HW-CC-KV=V1&HW-CC-Date=20260709T134201Z&HW-CC-Expire=86400&HW-CC-Sign=6D37BD4FDE12BBF415A5C51B06A160F1E1CB18D01DB1D9E9DB69A04FCBD97F9A)
    
    这里的指纹是sha1指纹，通常可以通过它作为md5值去备案。
    

#### 常见FAQ

Q：对于MAC电脑，如何根据下载的证书获取公钥和签名信息？

A：MAC电脑用文本编辑打开下载的cer证书文件，删除完根证书、中间证书内容保存并关闭文件后，点击文件，使其处于选中状态，按空格键，就可以查看md5、sha1、sha256的值。

Q：打开.cer证书获取的指纹是sha1指纹，有些接入商需要提供md5指纹，应该如何获取呢？

A：一般接入商可以直接使用sha1指纹进行备案，如果确实需要获取md5指纹，可以通过openssl命令获取。如下：

D:\\>openssl x509 -fingerprint -md5 -noout -in myapp.cer

md5 Fingerprint=55:9F:F7:\*\*:\*\*:\*\*:\*\*:\*\*:\*\*:\*\*:\*\*:9A:3A:08:8E

当然sha1指纹也可以通过命令获取：

D:\\>openssl x509 -fingerprint -sha1 -noout -in myapp.cer

sha1 Fingerprint=15:3E:C8:\*\*:\*\*:\*\*:\*\*:\*\*:\*\*:\*\*:\*\*:DF:46:F1:53:AF:84:C9:BF:D0:61

Q：使用相同.csr生成的.cer证书公钥与指纹是否一致？

A：生成的.cer证书如果未删除根证书和中间证书，通过打开.cer文件查询的公钥和指纹是一致的；“删除根证书和中间证书，保留叶子证书”后，相同.p12和.csr生成的.cer证书公钥一致，指纹不一致。

Q：证书过期后重新生成证书，指纹不一致是否需要重新备案？

A：如果使用相同.csr重新生成的证书公钥一致，指纹不一致；使用不同的.csr生成的证书公钥和指纹均不一致。建议更换证书后同步更新备案信息。

Q：所有应用都是共用一个发布证书，那所有应用备案的md5值和公钥值是不是全是一样，唯一不同的就是包名不同？

A：当所有应用共用同一个发布证书时，这些应用的备案所需md5值和公钥值会完全相同，主要区别在于包名。

Q：APP备案需要获取APP的公钥信息，公钥信息在证书里，这个证书是发布证书还是调试证书？

A：公钥信息需要从发布证书中获取，调试证书仅用于开发阶段的本地调试中使用，不可用于APP备案。