Windows任务计划程序用服务账户克隆TFS Git仓库遇自签名证书问题
解决域服务账户执行Git克隆时的自签名证书问题
问题背景
通过Windows任务计划执行Git克隆TFS仓库时,域用户运行正常,但域服务账户执行时抛出SSL证书错误:
fatal: unable to access 'https://repoName/': SSL certificate problem: self signed certificate in certificate chain
此前已通过给域用户配置全局Git SSL CA路径解决,但该配置对域服务账户无效,且不想禁用SSL验证。
原因分析
git config --global命令会将配置写入当前用户目录下的.gitconfig文件(如C:\Users\<普通用户名>\.gitconfig),域服务账户拥有独立的用户目录,无法读取普通用户的Git配置,因此找不到指定的证书文件或未配置SSL CA路径。
解决办法
1. 给域服务账户单独配置全局Git SSL CA信息
- 以域服务账户身份启动命令行:执行
runas /user:你的域\服务账户名 cmd,在弹出窗口中输入服务账户密码 - 在该命令行中执行配置命令:
注意:证书文件路径建议放在所有账户都能访问的公共目录(如git config --global http.sslCAInfo "C:\公共路径\ca-bundle.crt"C:\Program Files\Git\ssl\certs\ca-bundle.crt),避免放在普通用户专属目录。 - 或者手动编辑服务账户的
.gitconfig文件(路径一般为C:\Users\<服务账户名>\.gitconfig),添加以下内容:[http] sslCAInfo = C:\公共路径\ca-bundle.crt
2. 确保证书文件权限正确
右键ca-bundle.crt文件 → 属性 → 安全 → 编辑,添加域服务账户,赋予读取权限,避免因权限不足导致无法读取证书。
3. 在克隆命令中直接指定SSL CA参数
如果不想修改服务账户的全局配置,可在批处理的克隆命令中直接添加参数,强制指定证书路径:
git clone https://repoName/ --config http.sslCAInfo=C:\公共路径\ca-bundle.crt
4. 将证书导入Windows系统级证书存储(最彻底方案)
把自签名证书导入本地计算机的「受信任的根证书颁发机构」,让所有账户(包括服务账户)都信任该证书:
- 运行
mmc.exe→ 文件 → 添加/删除管理单元 → 选择「证书」 → 选择「计算机账户」 → 本地计算机 → 完成 - 展开「受信任的根证书颁发机构」 → 右键「证书」 → 所有任务 → 导入,选择下载的自签名证书完成导入
- 注:Git 2.14及以上版本默认会优先使用系统证书存储,无需额外配置即可生效。
内容的提问来源于stack exchange,提问作者Circle Hsiao
相关产品推荐
相关产品推荐

