解决「短信转发器」提示「证书验证失败」的完整指南(Root+ADB 方案)
发布日期: 2025-10-14
标签: Android, ADB, 证书, 短信转发, Root, SmsForwarder, Fiddler, Charles, mitmproxy
分类: 实战教程
适用场景:
- 使用 SmsForwarder 转发短信时,日志一直报「SSLHandshakeException / 证书验证失败」
- 手机系统 Android 4.x(已 Root),无法安装用户 CA 证书到系统目录
- 愿意动手敲几行 ADB 命令,一次性根治问题
🚀 引言:告别证书验证失败!
如果你在使用强大的 SmsForwarder 应用时,不幸遭遇了恼人的「SSLHandshakeException / 证书验证失败」错误,特别是在老旧的 Android 4.x 设备上,那么恭喜你,这篇教程将为你提供一个彻底的解决方案!我们将利用 Root 权限和 ADB 命令,将抓包工具的 CA 证书提升为系统级信任证书,让你的短信转发器重获新生。
🎯 思路一句话:系统级信任,一劳永逸!
核心思路非常简单:把你的抓包工具(Fiddler/Charles/mitmproxy 等)的 CA 证书制作成 系统级信任证书,并将其放置到 Android 设备的 /system/etc/security/cacerts/
目录下。这样,Android 4.x 系统就不会再「嫌弃」这些证书,HTTPS 拦截就能成功,SmsForwarder 自然也就不再报「证书验证失败」了。
🛠️ 1. 准备工作(3 个下载)
在开始之前,请确保你已经下载好以下文件:
文件 | 用途 | 提示 |
---|---|---|
Android SDK Platform-Tools | 提供 adb / fastboot 命令 | 官方最新版即可 |
已制作好的系统证书目录 | 包含抓包工具(Fiddler/Charles/mitmproxy)所需的 <hash>.0 系统证书 | 解压后得到 cacerts/ 文件夹 |
SmsForwarder | 开源短信转发神器 | 确保已安装,并遇到 HTTPS 报错 |
⚙️ 2. 操作步骤(复制粘贴即可)
请按照以下步骤,一步步完成证书的替换。确保手机已连接电脑并开启 USB 调试。
2.1 解锁 System 分区(获得读写权限)
# 手机连接电脑,打开 USB 调试
adb devices
# 进入 root 壳(部分设备可能需要先 adb shell,再 su)
adb root
adb shell
# 解锁 /system 分区,使其可读写
mount -o remount,rw /system
2.2 备份原厂证书(可选但强烈建议!)
为了安全起见,我们强烈建议你备份当前的系统证书,以防万一。
# 备份原有的 cacerts 目录到 /sdcard
cp -r /system/etc/security/cacerts /sdcard/cacerts_backup
2.3 一键替换证书目录
现在,我们将把下载好的包含抓包证书的 cacerts
文件夹推送到手机,并替换掉系统原有的证书目录。
# 先退出当前的 adb shell
exit
# 将新的 cacerts 目录推送到手机的 /sdcard 目录
adb push cacerts /sdcard/
# 重新进入 adb shell,并切换到 root 用户
adb shell
su
# 删除旧的证书目录
rm -rf /system/etc/security/cacerts
# 将 /sdcard/ 下的新证书目录移动到 /system/etc/security/
mv /sdcard/cacerts /system/etc/security/cacerts
# 修复新证书目录及内部文件的权限
chmod 755 /system/etc/security/cacerts
chmod 644 /system/etc/security/cacerts/*
2.4 重新加锁 & 重启设备
完成证书替换后,重新加锁 /system
分区并重启手机,让更改生效。
# 重新加锁 /system 分区,使其只读
mount -o remount,ro /system
# 重启手机
reboot
✅ 3. 验证成果
手机重启后,进入 设置 → 安全 → 受信任凭据 → 系统。
如果你能看到「DO_NOT_TRUST_FiddlerRoot」、「mitmproxy」、「Charles Proxy」等字样,那就表示证书已经成功生效了!
现在,打开 SmsForwarder,尝试测试 WebHook 或邮件通道。你会发现日志中不再出现「证书验证失败」,HTTPS 抓包也能正常解密,一切恢复正常!
🤔 4. 常见问题速查 (FAQ)
现象 | 解决方案 |
---|---|
Read-only file system | 忘记执行 mount -o remount,rw /system |
Cross-device link | 不要跨分区移动。建议先 cp -r 再 rm -rf ,或者直接在本分区 mv |
证书不显示 | 确保证书文件名是 <hash>.0 格式(本文提供的下载包已处理好) |
重启后证书消失 | 部分机型开启了 dm-verity ,需要刷入已关闭验证的 boot.img ,或每次重启后手动挂载 |
👨💻 5. 懒人脚本(可选)
你可以将步骤 2.1 到 2.4 的核心命令保存为一个脚本(例如 fix-cert.sh
),方便一键执行。
#!/system/bin/sh
# 挂载为可读写
mount -o remount,rw /system
# 备份(可选)
# cp -r /system/etc/security/cacerts /sdcard/cacerts_backup_$(date +%Y%m%d)
# 替换
rm -rf /system/etc/security/cacerts
cp -r /sdcard/cacerts /system/etc/security/cacerts
# 修复权限
chmod 755 /system/etc/security/cacerts
chmod 644 /system/etc/security/cacerts/*
# 挂载为只读并重启
mount -o remount,ro /system
reboot
使用方法:将脚本推送到手机,然后在 adb shell
中执行 sh /sdcard/fix-cert.sh
🏁 6. 结语
Android 4.x 虽然已经停止官方更新,但其系统证书过期或缺失的问题会导致大量依赖 HTTPS 的现代应用无法正常工作。通过上述 Root+ADB 替换系统证书的方案,我们可以轻松让这些老旧设备“重获新生”,继续发挥余热。
希望这篇教程能帮助你解决 SmsForwarder 的证书问题,让它能稳定地将短信转发到钉钉、飞书、Telegram 等 HTTPS 通道。如有任何疑问,欢迎在评论区留言,或到 SmsForwarder GitHub 提 Issue 一起交流!