【发布时间】:2020-07-19 19:33:03
【问题描述】:
我正在开发一个具有微服务架构的 Web 应用程序。我使用 docker 和 docker-compose 来运行我的微服务。我想从前端服务访问一个 api。但它总是抛出 SSL 证书异常,这告诉我发行者没有通过 curl 验证。我从演示 MVC 应用程序中的 HttpClient 收到此错误:“根据验证过程,远程证书无效。”
我创建了一个演示项目来测试它,这里是 github 链接: https://github.com/KriszW/AccessDockerContainersFromEachOtherDemo
我知道问题出在容器内。因为我用 curl 测试了它,当我指定 --insecure 属性时它起作用了。所以我知道我的容器中的 ssl 证书有问题。
我知道我对 API 没有任何问题,因为我在 kestral 中运行它们并且它们也运行良好。
docker 容器或图像有问题。
提前感谢您的帮助,我真的不知道现在该怎么办,以及如何解决它。
我的 Web API 和 MVC 应用程序也使用最新的 .Net Core 3.1。
【问题讨论】:
-
FWIW,通过 SSL 在网络/集群内的容器/pod 之间进行通信并不常见,因为它是不必要的,只会引起额外的麻烦。您通常会让服务通过 HTTP 在彼此之间进行通信,然后终止 HTTPS,使流量从外部进入网络,例如通过 API 网关或反向代理。
-
错误很明显 - 使用的证书无效。它们很可能是根据定义无效的自签名证书。
when i specified the --insecure attribute it worked.那是因为证书 无效,所有客户都会抱怨,除非你告诉他们要么忽略它,要么信任它 -
我已更新我的答案,为您提供有关如何挂载卷和配置证书的更多信息。
-
谢谢大家。我终于设法解决了:D。我设法信任 Docker 中的证书,但我想我会坚持 Chris 的想法,因为我可以看到这是目前的最佳实践,因为我有一个 API 网关。再次非常感谢您
标签: c# asp.net-mvc docker asp.net-core ssl-certificate