【问题标题】:Asp.net Core Docker container outbound HTTPS calls failingAsp.net Core Docker 容器出站 HTTPS 调用失败
【发布时间】:2020-01-17 03:54:51
【问题描述】:

我正在使用以下 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

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

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

我在这里遗漏了什么,为什么我必须这样做作为一种解决方法?

在尝试对此进行研究时,我遇到了一些讨论,即需要“客户端证书”来建立此连接,但没有具体示例。

此外,我在技术上使用 Rancher 来管理我们的 Docker 管理系统,该系统具有一组运行这些容器的基础架构。不确定这是否会有所不同,但我想我会提到它。

【问题讨论】:

    标签: curl docker asp.net-core


    【解决方案1】:

    由于我在公司内部网络上运行它,并且我的公司安全部门为内部应用程序颁发了证书,我必须将 CA 链证书添加到我的容器中,以便它将我的公司识别为有效的权威.我将这些添加到我的 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 经验,我确实花了几个月的时间试图弄清楚为什么我无法使用我们正在编写的多个 API 在我们的 Rancher 系统中获得 SSL 连接,然后遇到了这个问题,这使得缺失的部分到位......永远感谢您的工作和评论!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-25
    • 2019-10-30
    • 1970-01-01
    • 2018-11-17
    • 1970-01-01
    • 2019-06-23
    • 1970-01-01
    相关资源
    最近更新 更多