Android设备安装自定义证书导致HTTPS连接问题的解决方法

6次阅读
没有评论

问题描述

在一个已经Root的Android 4.3系统上尝试将Charles Proxy的证书推送到/system/etc/security/cacerts目录,以便进行SSL拦截测试。但在完成操作后,所有使用 HTTPS 的网站(如Chrome)均无法正确加载,显示“Your connection is not private”的警告信息,并且在设置 > 安全性 > 受信任的证书 中没有发现任何系统证书。

解决方案

方案一:恢复系统证书

  1. 检查当前证书情况
  2. 使用文件管理器或root权限工具(如Root Explorer)检查/system/etc/security/cacerts目录,确认是否存在其他可能被覆盖或删除的CA证书。
  3. 重新放置已有证书
  4. 如果能找到原证书,请确保所有现有的可信根CA证书均存在于/system/etc/security/cacerts中。通常系统应包含50-60个以上的信任根证书。

操作步骤

1. 使用root管理器(如Root Explorer)检查看是否还有旧的系统证书。
2. 如果存在旧的证书,请将它们手动复制回`/system/etc/security/cacerts`目录。
3. 清理并重启设备,以确保设置更新生效。请注意此操作会需要在RECOVERY模式下复原出厂设置或清理相关数据分区。

请务必小心地执行这些步骤,并建议在进行任何修改前保存现有的系统证书配置文件作为备份,避免引入不必要的风险和问题。

方案二:使用恢复默认信任库

  1. 创建镜像文件
  2. /system/etc/security/cacerts 目录创建一个完整备份。这可以通过从RECOVERY模式引导并执行如下命令实现:
    shell
    adb shell
    su -
    cp /system/etc/security/cacerts /sdcard/certificates_backup
    reboot recovery
  3. 恢复默认信任库
  4. 在RECOVERY模式中选择“备份和还原系统”,使用之前保存的备份文件,将信任根证书恢复至/system/etc/security/cacerts目录。
  5. 重启设备
  6. 完成上述步骤后,重启设备以恢复正常的HTTPS连接。
1. 使用如下命令进行备份:
   ```shell
   adb shell su cp /system/etc/security/cacerts /sdcard/certificates_backup
   ```
2. 在RECOVERY引导界面中使用“备份与还原”功能加载“证书备份文件”。
3. 重启设备后测试HTTPS链接是否恢复正常。

建议仅在确认有原厂默认信任库的环境下执行上述操作,避免因误操作导致设备整体运行异常。

以上方案提供了两种方法来解决安装自定义证书后HTTPS网站无法正常显示的问题。具体操作需谨慎进行,最好在了解所有步骤的前提下逐步尝试。

正文完