macOS Catalina使用Mailtrap出现OpenSSL证书验证失败问题咨询
问题根因
你遇到的SSL证书校验失败问题确实由Let's Encrypt旧DST Root CA X3根证书过期导致,你之前的排查方向是正确的。macOS Catalina 10.15.7自带的LibreSSL 2.8.3版本内置根证书库仍保留了已过期的DST根证书,校验Mailtrap服务的证书链时会优先匹配该过期证书,最终触发校验失败报错。
你之前修改系统钥匙串证书的操作未生效,原因是LibreSSL默认不读取macOS系统钥匙串的证书配置,仅使用自身内置的根证书库。
最优解决方案(无系统级副作用)
无需修改系统SSL组件,仅调整应用层的CA证书配置即可解决问题:
- 下载官方维护的最新CA根证书集合文件
cacert.pem,保存到本地无权限限制的路径,例如/usr/local/etc/cacert.pem - 找到你当前使用的PHP配置文件
php.ini,修改以下两个配置项:
curl.cainfo = "/usr/local/etc/cacert.pem" openssl.cafile = "/usr/local/etc/cacert.pem"
- 重启Web服务(Apache/Nginx)或PHP-FPM进程,重新测试邮件发送即可。
如果使用其他语言的开发框架,可直接在邮件发送组件的配置项中指定自定义CA证书路径,无需修改全局配置。
更新LibreSSL方案(适用于需要系统全局生效的场景)
如果你需要解决系统所有工具的SSL校验问题,可以选择更新LibreSSL版本:
操作步骤
- 确认已安装Homebrew包管理器
- 执行命令安装最新版LibreSSL:
brew install libressl - 将新版LibreSSL的路径加入终端环境变量,如果你使用zsh终端,执行:
echo 'export PATH="/usr/local/opt/libressl/bin:$PATH"' >> ~/.zshrc
如果使用bash终端,执行:echo 'export PATH="/usr/local/opt/libressl/bin:$PATH"' >> ~/.bash_profile - 执行
source ~/.zshrc(或对应bash配置文件)使配置生效,执行openssl version确认版本已升级到3.x最新版即可。
副作用说明
- macOS原生系统工具默认仍会调用自带的LibreSSL 2.8.3版本,不会影响系统基础功能稳定性
- 仅终端下调用的第三方命令行工具会使用新版LibreSSL,极小概率会出现依赖旧版LibreSSL的工具兼容异常
- 如出现兼容问题,只需要删除之前加入的PATH环境变量配置,重启终端即可恢复系统默认版本。
内容的提问来源于stack exchange,提问作者wanderlusted
相关产品推荐
相关产品推荐

