Traefik为子域颁发证书可以正常工作,为域颁发DigitalOcean证书

时间:2019-02-16 10:30:00

标签: digital-ocean traefik

我的情况很奇怪,我设置了traefik来发布让我们为我的子域和主域加密通配符证书,但是,主域证书有时是有效的,让我们对证书进行加密,有时不是-Digital Ocean发行的有效“ kubernetes”证书(不知道其来源)。现在,我正在使用acme登台服务器以不超过速率限制,因此当前不信任证书,这很好,问题确实出在发行者身上。在https://api.gogl.me上,该证书与https://traefik.sys.gogl.me一样来自Fake LE,但在https://gogl.me上,则来自DigitalOcean。

我不明白为什么有时候证书来自一个发行人,有时又来自另一个发行人。 Traefik清楚地选择了主机规则,并重定向到正确的容器。我也在使用领事来存储证书,并且我还尝试了删除每项服务,甚至包括卷,但无济于事。

traefik.toml

[[acme.domains]]
  main = "gogl.me"
[[acme.domains]]
  main = "*.gogl.me"
[[acme.domains]]
  main = "*.sys.gogl.me"

gogl.me的服务

web:
    image: customnginximage
    command: ["nginx", "-g", "daemon off;"]
    depends_on:
      - backend
    networks:
      - default
      - traefik-public
    ports:
      - "80"
    deploy:
      replicas: 1
      labels:
        - traefik.enable=true
        - traefik.backend=Web
        - traefik.tags=${TRAEFIK_PUBLIC_TAG:-traefik-public}
        - traefik.docker.network=traefik-public
        - traefik.frontend.rule=Host:gogl.me
        - traefik.port=80
        # Traefik service that listens to HTTP
        - traefik.redirectorservice.frontend.entryPoints=http
        - traefik.redirectorservice.frontend.redirect.entryPoint=https
        # Traefik service that listens to HTTPS
        - traefik.webservice.frontend.entryPoints=https

1 个答案:

答案 0 :(得分:0)

解决方案实际上非常简单,您不必定义两个acme域(gogl.me和* .gogl.me),而必须将通配符域定义为主域,而将实际主域定义为替代域,如此处所述:https://docs.traefik.io/configuration/acme/#wildcard-domains

因此配置应如下所示:

[[acme.domains]]
  main = "*.gogl.me"
  sans = ["gogl.me"]
[[acme.domains]]
  main = "*.sys.gogl.me"