Asp.net Core Docker容器出站HTTPS调用失败

时间:2017-08-30 23:31:10

标签: curl docker asp.net-core

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

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

即使远程端有有效证书,这似乎也会发生。我已经能够通过附加以下HttpHandlerto和HttpClient来绕过这个问题,这似乎绕过了这个问题:

var httpClientHandler = new HttpClientHandler();
httpClientHandler.ServerCertificateCustomValidationCallback = (message, cert, chain, errors) => { return true; };

我在这里缺少什么,为什么我必须这样做才能解决?

在尝试研究这个问题时,我偶然发现了一些客户证书和#34;需要建立这种联系,没有具体的例子。

另外,我在技术上将Rancher用于Docker管理系统,该系统具有一组运行这些容器的基础架构。不确定这是否会产生影响,但我想提到它。

1 个答案:

答案 0 :(得分:0)

由于我在内部公司网络上运行此操作,并且我的公司安全部门为内部应用程序颁发了证书,因此我必须将CA Chain Cert添加到我的容器中,以便将我的公司识别为有效的权限。我将这些添加到我的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