2017-08-30 2 views
1
andernfalls

ich folgende Dockerfile bin mit einem Behälter für meine ASP.NET Core-Anwendung zu erstellen:Asp.net Core-Docker Container Outbound HTTPS ruft

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

Es scheint, dass, wenn mein Container hat keine abgehenden Anrufe tätigen über HTTPS, wird eine Ausnahme ausgelöst, Referenzierung curl:

System.Net.Http.HttpRequestException: An error occurred while sending the request. ---> System.Net.Http.CurlException: SSL connect error 

Dies auch dann, wenn die Remote-Seite ein gültiges Zertifikat muss passieren scheint. Ich in der Lage, dies zu umgehen, indem die folgenden HttpHandlerto ein Httpclient Befestigung, die die Probleme zu umgehen, scheint:

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

Was soll ich hier fehlt, und warum habe ich dies als eine Abhilfe zu tun?

Darauf zu erforschen versucht, stieß ich auf einige Diskussionen, die ein „Client-Zertifikat“ benötigt wird, um diese Verbindung herzustellen, ohne konkrete Beispiele.

Auch ich bin mit technisch Rancher für unser Docker-Management-System, das eine Reihe von Infrastruktur, die diese Behälter laufen. Nicht sicher, ob das überhaupt einen Unterschied macht, aber ich dachte, ich würde es erwähnen.

Antwort

0

Da ich dies auf dem internen Firmennetzwerk ausgeführt habe, und dass meine Firma Sicherheitsabteilung für interne Anwendungen ausgestellt hat, musste ich das CA Chain Cert meinem Container hinzufügen, damit es meine Firma als gültig erkennt Behörde. Ich habe diese auf meine 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