设置 Traefik 以仅使用 CLI 使用 Let's Encrypt 要求客户端证书

Setting up Traefik to require client side certificates with Let's Encrypt using CLI only

我正在尝试设置 Traefik 来处理 SSL 客户端证书,就像我以前使用 Apache 那样。但我似乎无法让它正常工作。我也在用Docker,这里是命令参数

    command:
      - --defaultEntryPoints=http,https
      - --insecureSkipVerify
      - "--entryPoints=Name:http Address::80 Compress:true Redirect.entryPoint:https"
      # This one works with no authentication
      - "--entryPoints=Name:https Address::443 Compress:true TLS"

      # These don't seem to do anything
      - "--entryPoints=Name:https Address::443 Compress:true TLS CA.Optional:false CA:/run/secrets/CA"
      - --ping
      - --docker
      - --docker.endpoint=tcp://daemon:2375
      - --docker.exposedByDefault=false
      - --docker.swarmMode
      - --docker.watch
      - --acme
      - --acme.email=REDACTED@trajano.net
      - --acme.onhostrule
      - --acme.entrypoint=https
      - --acme.httpchallenge
      - --acme.httpchallenge.entrypoint=http
      - --zookeeper.endpoint=zookeeper:2181
      - --zookeeper.prefix=traefik
      - --acme.storage=traefik/acme/acme.json

实际上是 CA.OptionalCA。我使用的是 auto-selected 证书的 Firefox,当我使用 Chrome 时,它使用的是缓存内容。因此,当我清除浏览器缓存时,一切都开始工作了。

请注意,此方法仅验证客户端证书是否由 CA 签名,但不会执行任何额外检查,例如使用的主题是什么。据我了解,这是目前 Traefik 1.7 的限制。