我在Ubuntu 14.04的Docker 1.13.1容器中运行ASP.NET Core 1.1 Web API。

当代码尝试从HTTPS服务器检索某些数据时,出现此证书身份验证错误:

 An error occurred while sending the request. ---> System.Net.Http.CurlException: Peer certificate cannot be authenticated with given CA certificates
   at System.Net.Http.CurlHandler.ThrowIfCURLEError(CURLcode error)
   at System.Net.Http.CurlHandler.MultiAgent.FinishRequest(StrongToWeakReference`1 easyWrapper, CURLcode messageResult)

HTTPS服务器是内部的,带有由我们公司CA签名的证书,因此请注意,我可能需要注册内部CA。

到目前为止,我已找到有关此错误的所有信息,并且Docker谈到了使Docker本身运行,连接到 repo 协议(protocol)等。我的Docker工作正常,并且Web API在容器外部的Ubuntu服务器上运行没有问题。

1)我需要在Docker镜像中添加CA根证书吗?

2)如果是,该怎么办?

3)如果没有,我该如何解决?

最佳答案

任务本身并不特定于docker,因为您也需要在普通系统上添加该CA。 askubuntu community上有关于如何执行此操作的答案。

因此,在Dockerfile中,您将执行以下操作(如果您以root以外的用户身份运行容器,请不要忘记chmod):

ADD your_ca_root.crt /usr/local/share/ca-certificates/foo.crt
RUN chmod 644 /usr/local/share/ca-certificates/foo.crt && update-ca-certificates

09-11 19:18
查看更多