Curl Asp.net核心Docker容器出站HTTPS调用失败

Curl Asp.net核心Docker容器出站HTTPS调用失败,curl,docker,asp.net-core,Curl,Docker,Asp.net Core,我正在使用以下Dockerfile为我的ASP.NET核心应用程序创建容器: FROM microsoft/aspnetcore:1.1.2 ARG source WORKDIR /app EXPOSE 80 COPY PublishOutput . ENTRYPOINT ["dotnet", "IdentityServer4.Management.dll"] 如果我的容器必须通过HTTPS进行任何出站调用,则会抛出一个异常,引用curl: System.Net.Http.HttpReques

我正在使用以下Dockerfile为我的ASP.NET核心应用程序创建容器:

FROM microsoft/aspnetcore:1.1.2
ARG source
WORKDIR /app
EXPOSE 80
COPY PublishOutput .
ENTRYPOINT ["dotnet", "IdentityServer4.Management.dll"]
如果我的容器必须通过HTTPS进行任何出站调用,则会抛出一个异常,引用curl:

System.Net.Http.HttpRequestException: An error occurred while sending the request. ---> System.Net.Http.CurlException: SSL connect error
即使远程端拥有有效证书,也会发生这种情况。通过将以下HttpHandler附加到HttpClient,我能够绕过此问题,这似乎绕过了这些问题:

var httpClientHandler = new HttpClientHandler();
httpClientHandler.ServerCertificateCustomValidationCallback = (message, cert, chain, errors) => { return true; };
我在这里遗漏了什么,为什么我必须这样做作为一个解决办法

在尝试研究这一点时,我遇到了一些讨论,即需要“客户机证书”来建立这种连接,但没有具体的例子


另外,我在技术上使用Rancher作为我们的Docker管理系统,该系统有一套运行这些容器的基础设施。我不确定这是否会有什么不同,但我想我会提到这一点。

因为我是在公司内部网络上运行此程序的,而且我的公司安全部门为内部应用程序颁发了证书,所以我必须将CA Chain证书添加到我的容器中,以便它能够识别我的公司是有效的机构。我在Dockerfile中添加了以下内容:

RUN curl -o /usr/share/ca-certificates/my_ca_chain.crt https://somelocation/my_ca_chain.crt
RUN echo "my_ca_chain.crt" >> /etc/ca-certificates.conf && update-ca-certificates

谢谢谢谢谢谢谢谢谢谢你!!!!!!!!!如果我能给一千个喜欢这个,我会的!一开始我几乎没有SSL经验,我花了几个月的时间试图弄明白为什么我们的Rancher系统中的SSL连接无法使用我们正在编写的多个API,然后遇到了这个问题,将缺少的peice放在了适当的位置。。。永远感谢您的工作和评论!