正如标题所说,我需要为Azure容器示例中托管的应用程序设置SSL,但是,我不太确定我需要从哪里开始。
我在地址http://myApp.northamerica.azurecontainer.io
处通过Azure容器示例托管了一个容器化应用。此地址被“官方”地址http://api.myApp.com
屏蔽。
为什么我不能只将SSL添加到表面域@http://api.myApp.com
,而将其重定向到真实的域@http://myApp.northamerica.azurecontainer.io
?或者我需要将SSL添加到这两个域吗?
此外,如果我需要使用SSL保护两个域,是否需要为每个域获取单独的证书?
Azure提供SSL证书服务,但我只需要知道最佳路径。谢谢。
4条答案
按热度按时间k10s72fa1#
在经历了围绕这个问题的痛苦研究之后,我们终于找到了如何使用Caddy Docker映像作为边车来向容器示例添加SSL。Caddy使自动续订和验证所有权以发布SSL变得容易。
我们写了一篇博客文章来帮助其他有同样问题的人。希望这能有所帮助。
https://www.antstack.io/blog/how-to-enable-tls-for-hasura-graphql-engine-in-azure-caddy/
sirbozc52#
据我所知,目前,仍然没有内置的支持启用SSL的Azure容器示例参考this。
但是,您可以有多种选择来为ACI应用程序启用SSL连接。
如果在Azure virtual network中部署容器组,则可以考虑使用其他选项为后端容器示例启用SSL端点,包括:
标准SSL证书Map到一个唯一的域名,因此每个域都需要单独的证书。
你可以开始在一个sidecar容器中设置Nginx作为SSL提供者,你需要一个
api.myApp.com
域的SSL证书。如果你想单独安全访问myApp.northamerica.azurecontainer.io
域,你可以在Nginx配置文件中配置额外的服务器块。请参考configuring HTTPS server in Nginx。vltsax253#
这里写了一段话:https://dev.to/kedzior_io/net-core-api-in-azure-container-instances-secured-with-https-using-caddy2-32jm
下面是复制/粘贴:
1.创建您的Web API项目,我们将其命名为
MyApp.Image.Api
,并假设它依赖于另一个项目MyApp.Core
1.将
Dockerfile
添加到MyApp.Image.Api
项目1.接下来,在同一个项目中创建名为
Proxy
的目录,您将需要4个文件:Caddyfile.development
-使用自签名证书在本地运行时,将创建代理Caddyfile.staging
Caddyfile.production
Dockerfile
-我们将在执行此操作之前设置环境1.现在需要将
docker-compose.yml
添加到项目中最后应该使用以下结构:
1.现在你可以开始了!我使用这个powershell脚本来构建我的映像。如果你是在本地构建的话,就运行这个脚本:
如果要构建映像并将其推送到Azure Container Registry,请在确保已创建注册表之前执行以下命令:
酷!你已经准备好了!##
1.您将需要两个软件包:
一月十日一月一日一月一日
1.让我们从使用C# Fluent API连接到Azure开始
从哪里获得这些服务主体ID?
在Azure CLI中执行以下操作:
az ad sp create-for-rbac --name myapp-containers --sdk-auth > my.azureauth
该文件将包含所需的所有服务主体数据。
1.现在主要部分:
容器正在运行!
大约需要2:50分钟才能让它们完全可用。
点击上面代码中给出的
fqdn
,得到我的swagger索引页:zy1mlcev4#
我在这篇文章中找到了答案:https://www.raeffs.dev/blog/2021/05-mai/25-autogenerate-ssl-certificates-for-aci/
我有一个可以通过
other-service.francecentral.azurecontainer.io
上的端口80访问的服务。我添加了以下代理,它们响应URL
caddy-example.francecentral.azurecontainer.io
上的端口80和443。下面是文件
azure_container_caddy.yaml
的内容:您必须更新
caddy-example
的2个示例和other-service
的示例,并更改主机名中的location
和区域。然后我只需要部署它: