Traefik 是否负责初始 "Let's encrypt" 身份验证和续订?

Does Traefik take care of the initial "Let's encrypt" authentication and renewal?

为了从 Let's Encrypt 获得网站域的 SSL 证书,我必须证明对该域的控制权。 Let's Encrypt CA 将查看请求的域名并发出一组或多组挑战。

Q1: 当我有一个指向VPS的域名和一个Let's encrypt的电子邮件地址时,Traefik可以自动处理初始身份验证吗过程?

Q2:为 Let's encrypt 的初始验证保持​​ http (80) 端口打开就足够了吗?

Q3:自动续费是否需要开启80端口?或者这也可以是 443 端口吗?从现在开始将所有流量重定向到 https 会好得多。 SO - Traefik/LetsEncrypt 可以自动更新使用 443 端口打开吗?

答案(到目前为止):

Q1:是的! 电子邮件可以是您拥有的任何电子邮件地址。域名不必与您的域名相同。域名确实应该指向VPS。

Q2: YES! 第一次打开80端口。安装证书后开始重定向。

Q3: YES!: 找不到答案,所以我立即尝试了第一个答案中给出的建议。由于更改了其他设置,我重新启动了大约 3 次,并且 Traefik 日志记录中没有显示任何错误。

现在让我们进入真正的代码。在代码中,您可以找到 3 个答案。下一个文件是 traefik.toml 文件:

logLevel = "ERROR"
defaultEntryPoints = ["http", "https"]

[entryPoints]
  [entryPoints.http]
  address = ":80"
  [entryPoints.http.redirect]
    entryPoint = "https"
  [entryPoints.https]
    address = ":443"
    [entryPoints.https.tls]

[docker]
  domain = "xyz.com"

[api]

[acme]
  # Q1 - just use your email address
  email = "email@example.com"
  storage = "acme.json"
  onHostRule = true
  entryPoint = "https"
  # Q3 answer = this allows for the TLS challenge on port 443
  [acme.tlsChallenge]
  # Q2 answer = this provides the HTTP challenge on port 80
  #[acme.httpChallenge]
  #  entryPoint = "http"

docker-compose 文件是:

version: '3'
services:
  traefik:
    image: traefik:v1.7
    container_name: traefik
    restart: always
    networks:
      - yourappnet
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /your_path/traefik/traefik.toml:/traefik.toml
      - /your_path/traefik/acme.json:/acme.json
    ports:
      - "80:80"
      - "443:443"
    labels:
      - "traefik.docker.network=yourappnet"
      - "traefik.frontend.rule=Host:monitor.xyz.com"
      - "traefik.port=8080"

  yourapp:
    image: dockerhubuser/dockerimagename:latest
    ports:
      - 8080
    networks:
      - yourappnet
    labels:
      - "traefik.docker.network=yourappnet"
      - "traefik.frontend.rule=Host:xyz.com"

networks:
  yourappnet:
    driver: bridge

Q2 和 Q3:

用于解决 Let's Encrypt 挑战(创建或更新)的端口取决于您使用的挑战:

  • 对于 HTTP 质询,您需要使用端口 80
  • 对于 TLS-ALPN 挑战,您需要端口 443
  • 对于 DNS 质询,不需要端口,因为 DNS 服务器上的验证过程。

创建或更新使用相同的端口(取决于挑战),因此如果您希望 Traefik 自动更新您的证书,您需要保持端口打开。