gpt4 book ai didi

docker - LetsEncrypt 的 TLS 证书应该在所有容器上吗?

转载 作者:行者123 更新时间:2023-12-02 19:52:19 25 4
gpt4 key购买 nike

我正在尝试使我的 dockerized 应用程序在生产中启用 HTTPS。我可以找到大量关于自签名证书的教程。他们都达不到生产的东西。他们几乎以“是的,只需使用 Let's Encrypt”结束。对于我来说,这并没有真正阐明生产中负载平衡情况的行业标准是什么。

为了提供一些上下文,我使用以下命令创建了一个 dotnet core 应用程序:

dotnet new react -au Individual

我遵循了为我的容器创建 Dockerfile 的示例文档:
FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build
WORKDIR /app

# copy csproj and restore as distinct layers
COPY *.sln .
COPY aspnetapp/*.csproj ./aspnetapp/
RUN dotnet restore

# copy everything else and build app
COPY aspnetapp/. ./aspnetapp/
WORKDIR /app/aspnetapp
RUN dotnet publish -c Release -o out

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 AS runtime
WORKDIR /app
COPY --from=build /app/aspnetapp/out ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]

这部分引起了很多麻烦,因为应用程序正在发布,它正在进入生产模式并期待一个有效的证书。无论哪种方式,我都尝试在生产中推进和测试。这带来了很多关于证书的问题。在我安装 Certbot 并获得签名证书后。我剩下这四个文件:
  • cert.pem - 我认为这必须变成 .pfx
  • chain.pem - 我知道这是什么,但不确定谁需要它。
  • fullchain.pem - 此文件相同。
  • privkey.pem - 我认为这是用来帮助创建我的 .pfx 文件。

  • 我的主要问题是,在负载平衡的情况下。 certbot 是否会安装在每个容器上,证书是否应该在每个容器上生成?

    我认为它应该只创建一次,然后每个应用程序服务器将获得相同的证书和生成的 key 。这就引出了 certbot 应该安装在哪里的问题。

    我看到一些设置说 nginx 将在这些容器的前面并扮演负载均衡器的角色。然后 nginx 将处理 https 流量。这对我来说听起来不对,不仅您从 nginx 到应用程序服务器的流量未加密,而且我认为 IdentityServer 不会让我的应用程序在没有有效证书的情况下运行。

    欢迎任何有关该部门行业标准的指导。

    最佳答案

    您可以使用 Kubernetes 证书管理 Controller cert-manager .它可以帮助从各种来源颁发证书,例如 Let's Encrypt、HashiCorp Vault、Venafi、简单的签名 key 对或自签名。

    它将确保证书有效且是最新的,并在到期前的配置时间尝试更新证书。

    enter image description here

    关于docker - LetsEncrypt 的 TLS 证书应该在所有容器上吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59915855/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com