我正在将API从Windows .NET Full Framework(4.6.1)迁移到ASP.NET Core。
我能够通过以下Dockerfile在Rancher环境中启动容器:
root@a84db3bdc3cf:/app# cat Dockerfile
FROM microsoft/aspnetcore:1.1
ARG source=.
WORKDIR /app
EXPOSE 80
COPY $source .
ENTRYPOINT ["dotnet", "myapp.dll"]
我注意到我的代码中使用HttpClient
的任何人调用了HTTPS
网址,调用失败。
Message
中的InnerException
读取:
SSL连接错误
有没有人见过这个,如果有的话,你知道容器是否需要一些额外的配置才能通过HTTPS进行HTTP操作?它似乎可以正常使用HTTP。
修改
我的应用程序不会通过HTTPS运行。它通过HTTP托管。我的应用程序中的代码正在尝试调用通过HTTPS托管的远程API,并且具有有效的证书。
答案 0 :(得分:1)
我认为您必须公开443
而不是80
,因为443是Https
的默认端口
root@a84db3bdc3cf:/app# cat Dockerfile
FROM microsoft/aspnetcore:1.1
ARG source=.
WORKDIR /app
EXPOSE 443
COPY $source .
ENTRYPOINT ["dotnet", "myapp.dll"]
但请注意,您应该确保您的泊坞窗包含证书 docker container ssl certificates
答案 1 :(得分:1)
你可以测试一下这对你有用吗</ p>
docker run microsoft/aspnetcore-build:2.0 curl https://server
如果它没有,试试看你是否遇到和我一样的问题:
docker run microsoft/aspnetcore-build:2.0 curl -k https://server
对我来说,问题是我连接的网站的证书库中缺少部分证书链。
我像这样修改了Dockerfile:
# build runtime image
FROM microsoft/aspnetcore:2.0
WORKDIR /app
COPY --from=build-env /app/out .
COPY missing-cert.crt /usr/share/ca-certificates
RUN echo missing-cert.crt >> /etc/ca-certificates.conf
RUN update-ca-certificates
ENTRYPOINT ["dotnet", "myaspdotnetapp.dll"]
它对我有用