如何解决Traefik使用自签名TLS证书的问题

190次阅读
没有评论

问题描述

在使用 Traefik 进行反向代理时,遇到了使用自签名证书而不是 Let’s Encrypt 证书的问题。他在 docker-compose 文件中配置了 Traefik,并希望能够使用 Let’s Encrypt 证书来提供 HTTPS 服务。

解决方案

请注意以下操作可能因版本差异而有所变化,确保在操作前备份相关配置文件。

为了解决这个问题,你需要配置 Traefik 以使用 Let’s Encrypt 提供的证书而不是默认的自签名证书。以下是解决方案的步骤:

步骤1:更新 Traefik 配置文件

  1. 打开你的 traefik.yml 配置文件。
  2. certificatesResolvers 部分中,确保你使用了正确的邮箱地址和存储配置。你应该使用有效的邮箱地址来接收 Let’s Encrypt 的通知,并且配置正确的存储路径。
  3. 确保 tlsChallenge 部分存在,以便让 Traefik 使用 TLS 验证方式获取 Let’s Encrypt 证书。如果没有,请添加以下内容:
    yaml
    certificatesResolvers:
    resolver:
    acme:
    email: mail@example.com
    storage: acme.json
    tlsChallenge: {}
  4. 保存并关闭文件。

步骤2:更新服务标签

  1. 打开你的 docker-compose.yml 文件。
  2. 对于使用 Let’s Encrypt 证书的服务,确保你的标签中包含以下配置:
  3. traefik.http.routers.<service_name>.tls=true
  4. traefik.http.routers.<service_name>.tls.certresolver=resolver

<service_name> 替换为你的服务名称。

例如,如果你的服务名称是 gitea,则对应的标签可能如下所示:
yaml
labels:
- "traefik.http.routers.gitea.rule=Host(`gitea.example.com`)"
- "traefik.http.routers.gitea.entrypoints=websecure"
- "traefik.http.routers.gitea.tls=true"
- "traefik.http.routers.gitea.tls.certresolver=resolver"

  1. 对于需要配置 Let’s Encrypt 域名的服务,确保你设置了以下标签:
  2. traefik.http.routers.<service_name>.tls.domains.main=<your_domain>
  3. traefik.http.routers.<service_name>.tls.domains.sans=*.<your_domain>

<service_name> 替换为你的服务名称,将 <your_domain> 替换为你的域名。

例如,如果你的服务名称是 registry,且你的域名是 example.com,则对应的标签可能如下所示:
yaml
labels:
- "traefik.http.routers.registry.tls.domains.main=example.com"
- "traefik.http.routers.registry.tls.domains.sans=*.example.com"

  1. 保存并关闭文件。

步骤3:重新启动 Traefik 和服务

  1. 打开终端,并进入存放 docker-compose.yml 文件的目录。
  2. 运行以下命令以重新启动 Traefik 和你的服务:
    sh
    docker-compose down
    docker-compose up -d

步骤4:验证证书

  1. 打开浏览器,并访问你配置了 Let’s Encrypt 证书的服务的域名(比如 https://gitea.example.com)。
  2. 检查浏览器的地址栏是否显示安全标志,证明 Let’s Encrypt 证书已成功应用。

通过以上步骤,你应该能够让 Traefik 使用 Let’s Encrypt 提供的证书来提供 HTTPS 服务,而不再使用默认的自签名证书。

请注意,Let’s Encrypt 证书需要在域名解析生效后才能正常获取。如果证书获取失败,请检查域名解析是否正确设置。

注意:以上步骤是基于你提供的配置和信息进行的。如果你的配置存在差异,需要根据实际情况进行调整。

参考链接

正文完