如何在Docker镜像中添加CA根证书?

问题描述:

我在Ubuntu 14.04的Docker 1.13.1容器中运行ASP.NET Core 1.1 Web API。如何在Docker镜像中添加CA根证书?

当代码试图从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本身运行,连接到repos等。我的Docker工作正常,并且Web API在容器外部的Ubuntu服务器上运行时没有问题。

1)我是否需要在泊坞窗图像中添加CA根证书?

2)如果是这样,我该怎么做?

3)如果不是,我该如何解决这个问题?

+0

原因下投票吗?我看不出有什么问题,正如我所说的,答案显然不可用。如果你认为它是,请指出。 – Peter

该任务本身并不特定于泊坞窗,因为您需要在普通系统上添加该CA。关于如何做到这一点,askubuntu community有一个答案。

所以在Dockerfile你会做以下几点:

ADD your_ca_root.crt /usr/local/share/ca-certificates/foo.crt 
RUN update-ca-certificates 
+0

谢谢,我会尝试。我在我的服务器上成功添加了CA,但是我登录到容器时运行的命令不起作用。 – Peter

+0

谢谢,这个工作很好,虽然我用'卷曲'从我们的回购拉证书。 – Peter