我在 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 本身运行、连接到 repos 等。我的 Docker 工作正常,Web API 在容器外的 Ubuntu 服务器上运行没有问题。
- 我需要在 docker 镜像中添加 CA 根证书吗?
2)如果是这样,我该怎么做?
3)如果没有,我该如何解决这个问题?
原文由 Peter 发布,翻译遵循 CC BY-SA 4.0 许可协议
该任务本身并不特定于 docker,因为您也需要在普通系统上添加该 CA。 askubuntu 社区 上有一个关于如何做到这一点的答案。
因此,在 Dockerfile 中,您将执行以下操作(不要忘记 chmod,以防您使用 root 以外的用户运行容器):