遇到HTTPS抓包失败、开发证书突然失效,或者系统冷不丁弹窗提示“证书已过期”?别急着怀疑网络或工具,问题很可能就藏在Mac的钥匙串里。那些过期或不受信任的证书,就像卡在锁孔里的旧钥匙,不清理掉,新流程自然无法顺畅进行。下面这份操作指南,能帮你系统性地解决这个问题。

一、打开钥匙串访问并定位过期证书
在macOS上,所有数字证书的“大本营”就是“钥匙串访问”应用。无论是系统自带的,还是你安装的各种开发工具、袋里软件(比如Charles)添加的证书,都集中管理在这里。排查的第一步,就是从这里把“问题分子”揪出来。
操作其实很直观:先用“Command + 空格”呼出聚焦搜索,启动“钥匙串访问”。默认情况下,应用会显示“登录”钥匙串,这里包含了当前用户安装的大部分证书。如果想检查影响整个系统的证书,别忘了在左侧边栏也点开“系统”和“系统根证书”看看。
接下来,利用右上角的搜索框。直接输入英文expired或中文过期,很多过期证书的名称里就带着这些关键词。更直观的方法是点击顶部菜单栏的“查看”→“显示状态栏”,这样列表下方会多出一行状态栏。重点关注证书旁边的图标:出现醒目的红色❌或黄色⚠️,基本就坐实了证书异常或已过期。
二、删除过期证书
找到目标后,果断清理。删除操作会彻底移除证书文件,防止被系统或应用程序错误地调用,从而从根本上解决问题。当然,前提是确认这些证书确实已失效且不再需要。
操作上支持批量处理:在右侧列表里,按住Command键,就能多选所有带红❌图标的证书。然后,右键选择“删除”,或者直接按键盘上的Delete键。系统会弹出确认窗口,点击“删除”即可。如果证书位于“系统”钥匙串下,macOS会要求输入管理员密码进行授权,验证后即可完成删除。
三、重置并信任有效证书
有时候,问题不在于证书过期,而在于“信任关系”破裂了。比如抓包工具Charles Proxy的根证书,或者苹果的Apple WWDR证书,本身可能还在有效期内,却被设置成了“不信任”状态,导致相关功能失灵。这时就需要手动修复信任设置。
在钥匙串中找到目标证书(可以通过名称搜索,如“Charles Proxy”或“AppleWWDRCA”),双击打开“显示简介”窗口。点击左侧的“信任”三角箭头,展开详细设置。最关键的一步,是将“使用此证书时”右侧的下拉菜单,从默认的“使用系统默认”或“永不信任”,改为始终信任。关闭窗口并输入密码确认后,你会看到证书右下角的图标从❌变成了绿色的➕,这表示信任关系已恢复。
四、批量清理特定来源证书
对于开发者来说,苹果的各类开发证书、分发证书是“重灾区”。它们数量可能不少,手动一个个检查有效期效率太低。这时,可以借助关键词进行批量筛选和清理。
在钥匙串访问的搜索栏里,尝试输入一些通用关键词。例如,输入applew,可以快速定位到 Apple Worldwide Developer Relations Certificate Authority 相关证书。搜索iPhone Distribution、iOS Development等,则能筛出大部分开发相关的证书。
找到后,别急着全选删除。应该双击每个证书(或查看简介),在“常规”标签页底部核对“有效期”。对于终止日期明显早于当前日期(例如早于2026年4月25日)的证书,再执行删除操作,这样既能彻底清理,又避免了误删风险。
五、通过终端命令辅助识别过期证书
如果你习惯命令行操作,或者需要批量检查大量证书,终端会是一个更高效的工具。通过几行命令,可以快速列出所有证书的详细信息,包括有效期,方便进行脚本化管理和排查。
打开“终端”应用,执行以下命令,可以列出当前“登录”钥匙串中所有证书的主题和有效期:
security find-certificate -p login.keychain-db | openssl x509 -noout -subject -dates
命令输出中,“notBefore”是生效日期,“notAfter”就是过期日期。比对一下当前时间,就能判断证书状态。如果手头有单独的证书文件(.cer或.crt格式),也可以用这个命令检查:
openssl x509 -in /path/to/your/certificate.cer -noout -dates
将“/path/to/your/certificate.cer”替换为实际的文件路径即可。这种方式尤其适合在自动化脚本或持续集成(CI)环境中集成证书状态检查。
