MacOS Ventura下openssl连接google.com证书验证失败排查咨询
本地排查步骤
1. 手动指定SNI参数测试
先给openssl命令强制加上-servername参数指定SNI,执行:
openssl s_client -showcerts -connect google.com:443 -servername google.com
如果此时能正常获取Google的合法证书,说明本地默认的openssl调用未自动发送SNI请求,需进一步排查openssl的版本或配置。
2. 检查DNS解析是否异常
执行以下命令查看google.com的解析IP:
dig google.com nslookup google.com
将结果和其他正常服务器上的解析结果对比,若IP差异明显,说明本地DNS被篡改或劫持:
- 检查系统网络设置里的DNS服务器(系统偏好设置 → 网络 → 高级 → DNS),确认是否使用可信DNS服务(如8.8.8.8、1.1.1.1)
- 刷新本地DNS缓存:
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
3. 排查网络拦截类软件
暂时关闭以下工具后重新测试:
- VPN、代理软件(如Clash、Shadowsocks等)
- 防火墙工具(如Little Snitch、系统自带防火墙)
- 安全杀毒软件
如果关闭后恢复正常,说明对应软件的规则或证书拦截功能导致问题,需调整软件配置。
4. 检查本地hosts文件
查看hosts文件是否存在异常条目:
sudo nano /etc/hosts
搜索google.com相关条目,若存在非Google官方IP的指向,删除后保存,再刷新DNS缓存重新测试。
5. 验证openssl版本与路径
检查当前使用的openssl版本和路径:
openssl version which openssl
如果是Homebrew安装的openssl(路径通常为/usr/local/bin/openssl),尝试切换到系统默认的openssl(/usr/bin/openssl)执行命令测试:
/usr/bin/openssl s_client -showcerts -connect google.com:443
若系统默认版本正常,说明第三方安装的openssl存在配置或版本问题。
6. 用curl辅助验证
执行curl命令测试连接,观察输出中的证书和SNI相关信息:
curl -v https://google.com
如果curl也出现相同的自签名证书错误,说明问题出在网络层面而非单独的openssl工具;若curl正常,则聚焦排查openssl的配置或参数问题。
7. 检查系统代理设置
进入系统偏好设置 → 网络 → 高级 → 代理,关闭所有手动代理和自动代理配置(PAC),再重新执行openssl命令测试。
内容的提问来源于stack exchange,提问作者Jesper Rønn-Jensen
相关产品推荐
相关产品推荐

