为什么我无法将代理连接到我们的自托管Azure DevOps服务器?

nafvub8i  于 2023-04-22  发布在  其他
关注(0)|答案(1)|浏览(195)

this tutorial之后,我为本地Microsoft DevOps安装创建了一个Linux代理。(该过程基本上是创建一个目录,复制Dockerfilestart.sh并运行docker build -t my_agent .,然后运行docker run -e AZP_URL=https://my_server -e AZP_TOKEN=my_token -e AZP_AGENT_NAME=my_agent my_agent。)因为我们正在为服务器使用自己的证书,所以我修改了dockerfile以将证书导入容器:

WORKDIR /azp
COPY ./my_server.crt /usr/local/share/ca-certificates/
COPY ./start.sh  ./
RUN update-ca-certificates && chmod +x start.sh

# ENTRYPOINT [ "/azp/start.sh" ]

(与教程相比,增加了复制证书和运行update-ca-certificates。为了调试,我禁用了入口点。)当我现在使用curl查询服务器时,它工作正常:

curl -v https://my_server/

没有报告证书错误(不再)。运行start.sh脚本仍然失败,并显示错误:

The SSL connection could not be established, see inner exception.

查看日志时,可以找到以下提示,原因如下:

---> System.Security.Authentication.AuthenticationException: The remote certificate is invalid according to the validation procedure.

这可能是什么原因呢?我找不到任何关于远程证书无效原因的更精确的提示。如何解决这个问题?

fdbelqdn

fdbelqdn1#

如果只将证书导入到系统中,curl似乎是可以的。然而,Microsoft的代理需要整个证书链才能信任连接。要做到这一点,最简单的方法是使用基于chrome的浏览器打开一个安全连接到您需要的任何目标,打开安全连接的详细信息并导出根CA和中间证书。(服务器证书应该由服务器本身提供,Firefox似乎不允许导出证书。
交换这条线:

COPY ./my_server.crt /usr/local/share/ca-certificates/

这一行:

COPY ./root-ca.crt ./intermediat-cert.crt /usr/local/share/ca-certificates/

在此之后,SSL连接应该是可能的。通过省略服务器证书,您应该能够使用curl测试连接,因为它不会简单地接受来自服务器的证书并根据证书链进行验证。

相关问题