小编Jej*_*uni的帖子

Docker 中的 Asp.Net-Core 应用程序通过 https

我们最近遇到了在 docker 中通过 https 为我们的容器化应用程序提供服务的要求。

按照 Microsoft 的指南,我能够从我的主机访问容器应用程序,并且一切正常,包括 SSL。

尝试从 docker 环境内部与应用程序通信时会发生问题。同一个容器/其他容器在尝试与应用程序通信时遇到无法验证证书的问题。在 Microsoft 的链接示例应用程序中也可以观察到这种行为。尝试从容器 ( curl https://localhost)内 curl 网站总是会产生:curl: (60) SSL certificate problem: unable to get local issuer certificate 这不是 curl 特有的问题,因为使用的调用HttpClient也会返回与 SSL 相关的错误。

想象它就像在 Windows 上一样,您只需将自签名 .pfx 添加到您的证书存储中,我创建了一个自签名证书, New-SelfSignedCertificate -DnsName "localhost", "dockerDnsName", "127.0.0.1" -CertStoreLocation "cert:\LocalMachine\My" -NotAfter (Get-Date("2050-01-01")) 我需要在我的证书的 SubjectAlternateName 中同时使用 localhost 和 dockerDnsName 因为容器来自docker network 将使用该名称与容器通信。然后我将证书添加到我的主机的受信任根 CA。

我按照 Microsoft 的指南将 pfx 添加到容器,将 Kestrel 的环境变量设置为相关值(ASPNETCORE_Kestrel__Certificates__Default__PathASPNETCORE_Kestrel__Certificates__Default__Password)并启动容器。

从主机通过浏览器访问容器仍然有效。从容器内访问网站再次产生 SSL 错误。然后我将 .pfx 转换为容器内的 .crt …

c# ssl-certificate docker asp.net-core

10
推荐指数
2
解决办法
6397
查看次数

标签 统计

asp.net-core ×1

c# ×1

docker ×1

ssl-certificate ×1