Traefik 错误:证书无效,缺少扩展

Traefik 错误:证书无效,缺少扩展

我正在尝试在 docker 中为 https 设置 Traefik。但我收到错误:

traefik | time="2020-07-10T11:33:46Z" level=error msg="无法获取域“my.domain.com”的 ACME 证书:无法为域 [my.domain.com] 生成证书:错误:一个或多个域有问题:\n[my.domain.com] acme:错误:403 :: urn:ietf:params:acme:error:unauthorized :: tls-alpn-01 质询的验证证书不正确。缺少 acmeValidationV1 扩展。,url:\n" routerName=project_name@docker rule="Host( my.domain.com)" providerName=myresolver.acme

我通过搜索术语“tls-alpn-01 质询的验证证书不正确“ 和 ”缺少 acmeValidationV1 扩展“但却找不到任何可以解决我的问题的东西。

以下是完整的 docker-compose 文件:

version: "3"

services:
  traefik:
    image: "traefik:v2.2"
    container_name: "traefik"
    command:
      - "--api.insecure=true"
      - "--providers.docker=true"
      - "--providers.docker.exposedbydefault=false"
      - "--entrypoints.websecure.address=:8082"
      - "--certificatesresolvers.myresolver.acme.tlschallenge=true"
      - "[email protected]"
      - "--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json"
    ports:
      - "8082:8082"
    volumes:
      - "./letsencrypt:/letsencrypt"
      - "/var/run/docker.sock:/var/run/docker.sock:ro"

  project_name:
    container_name: project_name
    build:
      context: .
      dockerfile: Dockerfile
    volumes:
      - ./:/app
    command: sh -c "uvicorn src.main:app --host=0.0.0.0 --port=8000"
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.project_name.rule=Host(`my.domain.com`)"
      - "traefik.http.routers.project_name.entrypoints=websecure"
      - "traefik.http.routers.project_name.tls.certresolver=myresolver"
      - "traefik.http.services.project_name.loadbalancer.server.port=8000"

答案1

我没有使用 Traefik,但我使用 acme-tls/1 客户端时收到了“缺少 acmeValidationV1 扩展”错误。

解决方法我发现使用MaxProtocol“TLSv1.2”配置我的 Web 服务器(有效禁用“TLSv1.3”)

在 TLSv1.3 中,证书扩展以加密扩展

我尚未弄清楚链中的哪些部分处理得不好。(Let's Encrypt 或客户dehydrated端或我的网络服务器或底层 TLS 库)

[编辑] 续订后,现在强制续订(dehydrated -x)适用于 TLSv1.3(?!)我的原始证书已过期,如果有任何区别的话。

[编辑] 似乎没有强制验证。dehydrated -x --force-validation我发现我仍然在测试--ca letsencrypt-test。在使用简单的响应程序后https://github.com/dehydrated-io/dehydrated/blob/master/docs/tls-alpn.md除了我自己的 acme-tls/1 APLN 响应器之外,我自己的 acme-tls/1 ALPN 响应器也适用于强制验证。... 我不确定为什么现在事情可以正常工作,但我想我会用其他人可以尝试的替代方案更新这篇文章。

答案2

新答案:如果你打开附加跟踪,你可能会发现(就像我一样)这是"Missing acmeValidationV1 extension"由于应用程序使用以下代码响应 TLS-ALPN-01(ALPN“acme-tls/1”)请求造成的错误的证书,而不是发送生成的包含扩展的 ACME 挑战证书id-pe-acmeIdentifier

相关内容