在mac终端中导出系统级信任证书需从system.keychain操作:全量导出用sudo security find-certificate -a -p > system-trusted-certs.pem;按名称导出需精确匹配并加引号,如-s "isrg root x1";按sha-1指纹导出需先查指纹再用-z参数;导出der格式省略-p参数,文件应为二进制。

在Mac终端中导出系统级信任证书,是为了迁移根CA、审计预装证书或排查HTTPS拦截异常,必须从“系统”钥匙串(System.keychain)提取,而非登录钥匙串。
导出全部系统信任证书为PEM格式
这一步会将整个系统钥匙串中的所有证书(含根CA和中间证书)导出为一个可读的base64编码文本文件,适合批量分析或备份。
打开终端,执行命令:sudo security find-certificate -a -p /Library/Keychains/System.keychain > system-trusted-certs.pem
输入管理员密码(无光标反馈,输完直接回车),成功后当前目录生成 【system-trusted-certs.pem】 文件,可用文本编辑器打开查看每张证书的 BEGIN/END CERTIFICATE 块。
注意:-a 表示导出全部证书,-p 表示以PEM格式输出;若省略 -a,仅导出第一张匹配证书,极易遗漏关键根CA。
按名称精确导出单个根证书
当你已知证书显示名称(如“ISRG Root X1”或“CMCA Internal Root CA_2048”),可精准提取其公钥内容,避免混入无关证书。
方法一:终端直接定位并导出
运行命令:sudo security find-certificate -p -s "ISRG Root X1" /Library/Keychains/System.keychain > isrg-root-x1.crt
引号内名称须与钥匙串中“名称”列完全一致,大小写敏感;若名称含空格或特殊字符(如斜杠、括号),必须用双引号包裹。
方法二:先查证书SHA-1指纹再导出(更可靠)
① 获取目标证书指纹:sudo security find-certificate -p /Library/Keychains/System.keychain | openssl x509 -noout -fingerprint -sha1 2>/dev/null | grep -E "SHA1|^[A-F0-9]{2}:"
② 从输出中复制完整指纹(形如 `SHA1 Fingerprint=4B:3C:7F:...` 后的十六进制串),去掉空格和冒号,得到纯字符串(如 `4B3C7F...`)
③ 执行导出:sudo security find-certificate -Z 4B3C7F... /Library/Keychains/System.keychain | sed -n '/-----BEGIN/,/-----END/p' > custom-root.crt
【-Z 参数必须配合完整SHA-1哈希值使用,否则无法定位】;sed 命令用于过滤掉二进制头尾,只保留标准PEM块。
导出为DER格式供Windows或嵌入式设备使用
某些旧系统或IoT设备仅接受二进制DER编码证书,不能识别PEM格式。
执行命令:sudo security find-certificate -s "DST Root CA X3" /Library/Keychains/System.keychain > dst-root-ca-x3.der
该命令默认输出DER格式,无需额外参数;文件扩展名建议用 .der 而非 .crt,避免被误解析为PEM。
验证是否为DER:file dst-root-ca-x3.der 应返回 “data” 或 “DER certificate”;若返回 “ASCII text”,说明导出失败,可能名称不匹配或证书不在系统钥匙串中。











