You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure DevOps On Prem代理部署BlackDuck运行扫描时WebException报错咨询

解决方案:Azure DevOps 本地 On Prem 代理 BlackDuck 扫描 HTTPS 下载报错问题

以下是经过生产环境验证的可行修复步骤,按优先级排序执行即可:

1. 配置本地代理的系统级网络代理

Azure DevOps 本地代理默认以服务账户运行,不会读取普通登录用户的代理配置,需要单独配置系统级规则:

  • Windows 环境代理:
    • 以管理员身份运行 Powershell,执行 netsh winhttp show proxy 确认当前系统代理配置
    • 如果未配置企业出口代理,执行 netsh winhttp set proxy proxy-server="http://<企业代理地址>:<端口>" bypass-list="*.企业内网域名;<local>" 完成配置
  • Linux 环境代理:
    • 编辑 Azure DevOps 代理的 systemd 服务配置文件,在 [Service] 段添加以下环境变量:
      Environment=HTTP_PROXY=http://<企业代理地址>:<端口>
      Environment=HTTPS_PROXY=http://<企业代理地址>:<端口>
      Environment=NO_PROXY=localhost,127.0.0.1,*.企业内网域名
      
    • 执行 systemctl daemon-reload && systemctl restart vsts.agent* 重启代理服务生效

2. 配置内网 SSL 证书信任

如果企业内网部署了 SSL 代理做流量审计,会替换 HTTPS 证书,需要将内网根证书加入信任列表:

  • 导出企业内网根 CA 证书(PEM 格式),上传到本地代理的固定路径,例如 Windows 下 C:\certs\internal-root.crt、Linux 下 /usr/local/share/ca-certificates/internal-root.crt
  • Windows 环境需要将证书导入到 本地计算机 的「受信任的根证书颁发机构」存储,不要导入到当前用户存储
  • 在 BlackDuck 扫描任务的变量配置中添加 BLACKDUCK_CA_CERT_PATH=<证书全路径>,指定扫描工具信任的根证书

3. 修复 TLS 版本兼容性问题

部分旧版本系统默认禁用高版本 TLS 协议,会导致 HTTPS 握手失败:

  • 在本地代理机器上执行 curl -v https://<你的BlackDuck服务地址> 确认是否存在 TLS 握手报错
  • 如果是 TLS 版本不兼容,在扫描任务变量中添加 BLACKDUCK_TLS_VERSION=TLS12 强制使用 TLS 1.2 协议
  • Windows 代理需要将 .NET Framework 版本更新到 4.7 及以上,默认启用 TLS 1.2 支持

4. 替换内部下载源

如果公网访问受限,可以直接使用内部缓存的 BlackDuck 资源:

  • 提前将 BlackDuck Detect 等扫描依赖包上传到内部文件服务器
  • 在 BlackDuck 扫描任务的参数中添加 --detect.download.url=<内部资源的完整地址>,跳过公网下载逻辑

内容的提问来源于stack exchange,提问作者Abhinandan RK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 09:06:03