【问题标题】:Traefik V2.0 with Letsencrypt is unable to generate a certificate for the domains带有 Letsencrypt 的 Traefik V2.0 无法为域生成证书
【发布时间】:2019-10-14 21:42:16
【问题描述】:

我正在使用 Whoami 进行测试,但在生成证书时遇到了问题。

没有在 acme.json 文件中生成证书,并且站点正在使用来自 Traefik 的默认证书,该证书被导航器视为无效。

这是错误:

traefik         | time="2019-10-14T21:16:15Z" level=error msg="Unable to obtain ACME certificate for domains \"inner-whoami.mysite.com\": unable to generate a certificate for the domains [inner-whoami.mysite.com]: acme: Error -> One or more domains had a problem:\n[inner-whoami.mysite.com] acme: error: 403 :: urn:ietf:params:acme:error:unauthorized :: Invalid response from https://inner-whoami.mysite.com/.well-known/acme-challenge/xxxxxxxxxxxxxxxxxxxx [51.75.207.100]: \"Hostname: xxxxxxxxxx\\nIP: 127.0.0.1\\nIP: 172.18.0.2\\nRemoteAddr: 172.18.0.3:55692\\nGET /.well-known/acme-challenge/xxxxxxxxxx\", url: \n" rule="Host(`inner-whoami.mysite.com`)" routerName=inner-whoami-secured providerName=myhttpchallenge.acme
traefik         | time="2019-10-14T21:16:17Z" level=debug msg="legolog: [INFO] Unable to deactivate the authorization: https://acme-v02.api.letsencrypt.org/acme/authz-v3/xxxxxxxxxx"

这里是 docker-compose.yml 文件。一切都在里面。如您所见,这是为进一步部署做准备的测试。不是实际的生产文件。我需要先解决这个问题,然后才能使用 Traefik 服务器范围...

version: "3.3"

networks:
    # Allow the use of traefik in other docker-compose.yml files
    traefik:
        external: true

services:

  traefik:
    image: "traefik:v2.0"
    container_name: "traefik"
    command:
      # Only for development environment
      - "--log.level=DEBUG"
      - "--api.insecure=true"
      # Get Docker as the provider
      - "--providers.docker=true"
      # Avoid that all containers are exposed
      - "--providers.docker.exposedbydefault=false"
      # Settle the ports for the entry points
      - "--entrypoints.web.address=:80"
      - "--entrypoints.web-secure.address=:443"
      # Settle the autentification method to http challenge
      - "--certificatesresolvers.myhttpchallenge.acme.httpchallenge=true"
      - "--certificatesresolvers.myhttpchallenge.acme.httpchallenge.entrypoint=web-secure"
      # Uncomment this to get a fake certificate when testing
      #- "--certificatesresolvers.myhttpchallenge.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory"
      # Settle letsencrypt as the certificate provider
      - "--certificatesresolvers.myhttpchallenge.acme.email=me@mail.com"
      - "--certificatesresolvers.myhttpchallenge.acme.storage=/letsencrypt/acme.json"
    ports:
      - "80:80"
      - "443:443"
      - "8080:8080"
    networks:
      - "traefik"
    volumes:
      # Store certificates in ./letsencrypt/acme.json
      - "./letsencrypt:/letsencrypt"
      # Connect to Doker socket
      - "/var/run/docker.sock:/var/run/docker.sock:ro"

  inner-whoami:
    image: "containous/whoami"
    container_name: "inner-whoami"
    networks:
      - "traefik"
    labels:
      - "traefik.enable=true"
      # Get the routes from http
      - "traefik.http.routers.inner-whoami.rule=Host(`inner-whoami.mysite.com`)"
      - "traefik.http.routers.inner-whoami.entrypoints=web"
      # Redirect these routes to https
      - "traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https"
      - "traefik.http.routers.inner-whoami.middlewares=redirect-to-https@docker"
      # Get the routes from https
      - "traefik.http.routers.inner-whoami-secured.rule=Host(`inner-whoami.mysite.com`)"
      - "traefik.http.routers.inner-whoami-secured.entrypoints=web-secure"
      # Apply autentificiation with http challenge
      - "traefik.http.routers.inner-whoami-secured.tls=true"
      - "traefik.http.routers.inner-whoami-secured.tls.certresolver=myhttpchallenge"

【问题讨论】:

    标签: docker https docker-compose lets-encrypt traefik


    【解决方案1】:

    您可能需要将 http 挑战的入口点从 web-secure 更改为 web,即:

    - "--certificatesresolvers.myhttpchallenge.acme.httpchallenge.entrypoint=web"

    或者改用TLS Challenge

    - "--certificatesresolvers.myhttpchallenge.acme.tlschallenge=true"

    【讨论】:

      【解决方案2】:

      您是否检查了错误输出第二行链接中的 json?

      https://acme-v02.api.letsencrypt.org/acme/authz-v3/xxxxxxxxxx

      此链接包含有关未通过挑战的更多信息。如果它抱怨找不到 A 记录,我可能会有解决方案。在我的情况下,我需要将 MX 记录添加到我的域的 DNS 设置中。否则某些 DNS 服务器不会接收到它。我使用dig sub.mydomain.com @8.8.8.8 对此进行了测试,它给出了没有 MX 记录的 SERVFAIL。

      【讨论】:

        【解决方案3】:

        您是否尝试过使用您的真实网址而不是 mysite.com?

        【讨论】:

        • 好的,在 - "./letsencrypt:/letsencrypt" 对 docker 进行写访问?
        • Docker 创建了这个文件夹,所以我猜是的。它在root rw上。我试图把它交给我的用户。它没有改变行为。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-11-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多