各位开发者伙伴们!大家好,很多刚接触APP开发的小伙伴,都会被APP备案的各种“奇葩”要求搞得头大🤯 特别是那个“公钥”和“签名MD5/SHA-1值”,每次都得翻半天资料,一不小心就掉坑里。
别慌!今天我决定把压箱底的干货掏出来,整理成一篇“保姆级”教程。无论你是安卓老兵还是iOS专家,跟着这篇文章走,保证你分分钟搞定这些烦人的信息,把宝贵的时间还给代码!🚀
流程概览:一张图看懂所有步骤
在开始之前,咱们先上“地图”,免得在技术细节里迷路。我把整个流程绘制成了一张图,建议收藏备用!
graph TD
subgraph "安卓 (Android) 签名与公钥"
A["1. 准备好签名文件 (.keystore)"] --> B{"2. 获取签名指纹 (MD5)"};
B -- "✅ 推荐方法" --> C["使用Jadx GUI工具打开APK<br>直接查看签名信息"];
B -- "备用方法 (JDK 8+ 可能无效)" --> D["执行 keytool -list 命令"];
A --> F["3. 使用 keytool 导出证书 (.crt)"];
F --> G{"4. 安装 OpenSSL (如果需要)"};
G --> H["5. 使用 openssl 提取公钥"];
end
subgraph "苹果 (iOS) 签名与公钥"
I["1. 打开'钥匙串访问'应用"] --> J["2. 找到你的发布证书"];
J --> K["3. 查看详情, 复制SHA-1指纹"];
J --> L["4. 右键导出证书 (.cer)"];
L --> M["5. 使用 openssl 提取公钥"];
end
S["开始备案"] --> A;
S --> I;
C --> Z["🎉 填入备案系统"];
D --> Z;
H --> Z;
K --> Z;
M --> Z;
第一部分:安卓 (Android) 篇 - 坑多?不怕!
安卓这边因为环境多样性,坑确实不少,我们一个一个来填平。
1. APP包名 (Package Name)
这个最简单,就是你项目 build.gradle 文件里的 applicationId,直接复制就行。
2. 签名MD5值 (Signature MD5 Value)
这是第一个大坑!很多人发现用官方命令拿不到MD5了。
传统方法(JDK 8+ 可能失效 ⚠️)
传统上我们用 keytool 命令:
keytool -list -v -keystore [你的签名文件.keystore] -alias [你的别名]
但如果你用的是JDK 8以上的版本,大概率是看不到MD5指纹的,因为官方觉得它不够安全就给“优化”掉了。
终极解决方案:Jadx大法 (强烈推荐 👍)
别再折腾旧版JDK了!我给兄弟们推荐一个神器:Jadx。这是一个强大的反编译工具,查看签名信息简直是小菜一碟。
- 下载 Jadx: 前往 Jadx GitHub Releases 下载最新版。
- 构建APK: 在Android Studio里正常构建你的
release版APK安装包。 - 打开APK: 运行Jadx,直接把你的APK文件拖进去。
- 查找签名: 在左侧导航栏找到
APK signature或者在顶部菜单栏Tools -> APK signature,点开它。你会看到一个无比清晰的证书信息列表,MD5、SHA-1、SHA-256应有尽有!截图保存,随时取用!
3. 公钥 (Public Key)
获取公钥分两步:先导出证书,再提取公钥。
第一步:导出证书文件
还是用 keytool 命令,这次我们是导出证书。
keytool -export -rfc -keystore [你的签名文件.keystore] -alias [你的别名] -file certificate.crt
执行后,你会在当前目录下得到一个 certificate.crt 文件。
第二步:提取公钥 (需要OpenSSL)
接下来用 openssl 命令从证书里把公钥“揪”出来。
openssl x509 -in certificate.crt -pubkey -noout
执行成功后,终端会打印出以 -----BEGIN PUBLIC KEY----- 开头的一大段文本,把它完整地(包括首尾标记) 复制下来,这就是备案要的公钥!
Windows上没有 openssl 命令怎么办?
别担心,几行命令搞定安装。
方法一:使用 Chocolatey (推荐) 打开 PowerShell (管理员权限),运行:
# 如果没有安装Chocolatey,先运行这句来安装
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('[https://community.chocolatey.org/install.ps1](https://community.chocolatey.org/install.ps1)'))
# 然后安装OpenSSL
choco install openssl
安装后重启终端即可使用 openssl 命令。
方法二:手动下载安装
- 访问 Win32/Win64 OpenSSL 官方二进制文件下载页。
- 下载适合你系统的版本(Light版就足够了)。
- 安装后,记得把它的
bin目录(例如C:\Program Files\OpenSSL-Win64\bin)添加到系统的PATH环境变量里。
第二部分:苹果 (iOS) 篇 - 优雅且直接
相比安卓,iOS这边要统一和简单得多,基本都是图形化操作。
1. Bundle ID
这个不用多说,Xcode项目 General -> Identity -> Bundle Identifier,复制即可。
2. 签名SHA-1值 (Signature SHA-1 Value)
- 在你的Mac上,按
Command + 空格,搜索并打开 “钥匙串访问 (Keychain Access)” 应用。 - 左上角选“登录”,左下角选“我的证书”。
- 在列表中找到你的苹果发布证书,通常叫
Apple Distribution: ...。 - 双击它,在弹出的详情窗口里,找到 “SHA-1 指纹”,复制那串十六进制码。
- 格式化:把所有空格和冒号都去掉,变成一串连续的字符。例如:
- 原始值:
D1 38 45 FC ... A1 A2 - 备案需要:
D13845FC...A1A2
- 原始值:
3. 公钥 (Public Key)
同样是两步走,操作更简单。
- 导出证书: 在“钥匙串访问”里,右键点击你的发布证书,选择 “导出...”。
- 保存文件: 格式选择 “证书 (.cer)”,保存到桌面。
- 提取公钥: 打开Mac的“终端”应用,运行
openssl命令(Mac自带,无需安装):# 假设你把证书保存在桌面 openssl x509 -in ~/Desktop/your_cert_name.cer -pubkey -noout - 同样,将输出的
-----BEGIN PUBLIC KEY-----整块内容复制下来即可。
总结
好了,各位伙伴,到这里,备案需要的所有签名和公钥信息应该都到手了。总结一下关键点:
- 安卓MD5:别死磕
keytool,直接用 Jadx 看APK,省时省力。 - Windows OpenSSL:用 Chocolatey 一键安装,告别环境变量配置烦恼。
- iOS:所有操作都在 “钥匙串访问” 里,图形化界面,清晰明了。
希望这篇“接地气”的指南能帮你扫清备案路上的障碍。如果觉得有用,别忘了点赞、分享给更多需要的朋友!👍 下次再见!