2017-08-30 53 views
1

我使用以下Dockerfile爲我的ASP.NET核心應用創建一個容器:Asp.net核心泊塢容器出站HTTPS調用失敗

FROM microsoft/aspnetcore:1.1.2 
ARG source 
WORKDIR /app 
EXPOSE 80 
COPY PublishOutput . 
ENTRYPOINT ["dotnet", "IdentityServer4.Management.dll"] 

看來,如果我的容器有作出任何呼出電話通過HTTPS,拋出一個異常,引用捲曲:

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; }; 

缺少什麼我在這裏,和爲什麼我在做這個作爲一種變通方法?

在試圖研究這個問題時,我遇到了一些需要「客戶端證書」來建立這個連接的討論,沒有具體的例子。

另外,我在技術上使用Rancher作爲我們的Docker管理系統,它有一組運行這些容器的基礎結構。不知道這是否有所作爲,但我想我會提及它。

回答

0

正因爲我在內部公司網絡上運行此項服務,並且我的公司安全部門爲內部應用程序頒發了證書,所以我必須將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