运行流水线时AWS CodeCommit Git操作SSL证书报错问题
该报错根因为ZScaler开启SSL解密时,会替换目标站点的SSL证书为ZScaler自签发证书,异常设备的Git工具未信任ZScaler的根CA证书,因此校验证书失败。
定位步骤
- 对比两台设备的Git全局配置,执行
git config --global --list,重点核对http.sslCAInfo、http.sslBackend两个配置项,确认异常设备是否缺失ZScaler根证书路径配置、或SSL后端配置和正常设备不一致 - 检查系统证书存储:Windows系统打开证书管理器查看「受信任的根证书颁发机构」,macOS打开钥匙串访问查看系统根证书列表,Linux检查
/etc/ssl/certs/目录,确认异常设备的ZScaler根证书是否已正确导入系统信任列表 - 执行
git config --global --get http.sslVerify,确认异常设备是否未关闭SSL校验同时未配置CA证书路径 - 核对两台设备的Git版本,大版本差异会导致SSL后端读取证书的逻辑不同,比如Windows环境下旧版Git默认使用OpenSSL,新版默认使用Schannel(直接读取系统信任证书)
解决方案
- 方案1(通用推荐):手动配置Git信任ZScaler根证书
先从正常设备导出ZScaler根证书文件,在异常设备执行命令:git config --global http.sslCAInfo /path/to/zscaler-root-ca.crt
将路径替换为你本地存放ZScaler根证书的实际路径即可 - 方案2(Windows环境专属):切换Git的SSL后端为系统Schannel,自动读取系统已信任的证书,执行命令:
git config --global http.sslBackend schannel - 临时验证方案:可临时关闭SSL校验执行克隆操作验证问题根源,命令如下:
git -c http.sslVerify=false clone codecommit://alias@pipeline-name
注意:该方案仅用于验证问题,不要长期开启SSL校验关闭配置,会存在数据传输被窃听的安全风险 - 额外修复:如果上述配置均和正常设备一致,检查本地是否配置了
GIT_SSL_CAINFO环境变量,该变量会覆盖Git全局配置的证书路径,删除错误的环境变量即可恢复
内容的提问来源于stack exchange,提问作者Matt
相关产品推荐
相关产品推荐

