Mac HTTPS抓包失败、证书报错或提示“已过期”,主因是钥匙串中存有失效根/中间/自签名证书;需用钥匙串访问筛选并删除红色❌过期证书,对Charles等证书设“始终信任”,再用终端命令排查残留。

Mac上出现HTTPS抓包失败、开发环境证书报错或访问网站提示“证书已过期”,往往不是网站问题,而是钥匙串里存着大量已失效的根证书、中间证书或自签名证书;这些证书一旦过期,系统仍会尝试调用,导致验证链断裂、连接被拒、Charles/Fiddler无法解密流量。必须精准定位并移除它们,否则反复重装证书也无效。
打开钥匙串访问并筛选过期证书
钥匙串访问是macOS唯一能全局管理证书的原生工具,所有证书无论来源(系统自动安装、浏览器导入、开发者手动添加)都集中在此。不从这里入手,清理就是盲操作。
按下 Command + 空格 唤出聚焦搜索,输入“钥匙串访问”,回车启动应用。
在左侧边栏确认选中【登录】钥匙串;若怀疑是系统级证书异常(如访问银行、政府网站报错),再依次点击“系统”和“系统根证书”切换查看。
在右上角搜索框中输入 expired,回车——这是最直接命中过期证书的关键字,比手动翻页高效十倍。部分证书名称自带“expired”字样,该搜索可立即暴露它们。
点击顶部菜单栏“查看”→“显示状态栏”,此时窗口底部会出现状态栏。注意观察右侧图标:红色❌表示证书已过期,黄色⚠️表示证书不受信任或签名异常。这两个图标就是你要删除的核心目标,其他绿色✅图标暂不处理。
批量删除带红❌图标的过期证书
这一步必须严格限定范围:只删明确带红色❌图标的条目。误删绿色✅证书会导致系统功能异常(比如iCloud同步失败、App Store无法登录)。
在证书列表中,按住 Command 键,逐个点击所有显示红色❌图标的证书——不要用鼠标框选,框选可能误触正常证书。
右键选中项 → 选择“删除”,或直接按键盘 Delete 键。
弹出确认窗口时,点击“删除”按钮。若证书位于“系统”钥匙串中,系统会弹出管理员密码输入框,必须输入当前Mac的管理员密码才能继续;输错三次将锁定钥匙串访问1分钟。
对Charles Proxy等关键证书设为“始终信任”
很多开发者证书(如Charles Proxy根证书、Apple WWDRCA、本地mkcert生成的CA)本身没过期,但被系统默认设为“不信任”,结果表现和过期证书一样——抓包失败、HTTPS请求被拦截。这类证书不能删,必须修复信任状态。
在钥匙串访问中,于右上角搜索框输入 Charles Proxy 或 AppleWWDRCA,快速定位到对应证书条目。
双击该证书,打开“显示简介”窗口。
点击左侧“信任”三角箭头展开设置项。
在“使用此证书时”下拉菜单中,选择【始终信任】——这是唯一有效选项;选“仅用于验证网站”或“从不信任”都会导致抓包中断。
关闭窗口,系统弹出密码验证框,输入Mac登录密码后,证书右下角图标会由❌变为绿色➕,表示信任策略已生效。
按关键词批量清理开发类过期证书
开发人员常手动导入大量测试证书(如localhost、dev.example.com),时间一长,名字混乱、重复堆积、过期无人管。靠“expired”搜索漏检率高,需用业务关键词定向清剿。
第一步:在钥匙串访问右上角搜索框中输入 applew,回车。这个关键词能命中Apple Worldwide Developer Relations CA等已过期的WWDR证书(该证书已于2023年12月过期,但很多旧项目仍引用)。
第二步:再分别输入 mkcert、localhost、127.0.0.1,每输一个都检查结果列表中的状态图标,对带❌或⚠️的全部选中→删除。
第三步:重点检查证书“有效期”字段——双击任一可疑证书,在“常规”页签下看“有效期至”时间。若该时间早于【2026年7月8日】,即为过期,立即删除。
用终端命令排查残留证书
图形界面可能遗漏隐藏证书,尤其那些未在钥匙串访问中显示名称、仅以哈希值存储的条目。终端命令能穿透UI层,强制列出所有证书及其状态。
打开“访达”→“应用程序”→“实用工具”→“终端”。
执行以下命令,列出登录钥匙串中所有证书及其过期状态:security find-certificate -p -p login | openssl x509 -noout -dates 2>/dev/null || echo "无证书"
若返回结果含 notAfter= 时间早于2026-07-08,说明仍有过期证书残留,需回到钥匙串访问中按该证书指纹(SHA-1)搜索并删除。
执行以下命令,检查系统钥匙串中是否存在已吊销证书:security dump-trust-settings -d
输出中若出现 Revoked 字样,记录对应证书名,回到钥匙串访问中定位删除。

















