带有Traefik反向代理的Docker安装程序-NET:ERR_CERT_AUTHORITY_在一个域上无效,尽管另一个域的设置和配置相同

带有Traefik反向代理的Docker安装程序-NET:ERR_CERT_AUTHORITY_在一个域上无效,尽管另一个域的设置和配置相同,docker,nginx,dns,docker-compose,traefik,Docker,Nginx,Dns,Docker Compose,Traefik,我有一个Docker设置,Traefik作为反向代理。 我有一个NGINX容器服务于静态页面。 两个域(example-A.com和example-B.de)应该公开相同的静态页面。 虽然example-A.com按预期正常工作,但example-B.de会得到一个净错误:ERR\u CERT\u AUTHORITY\u INVALID error 示例-A.com在谷歌域名注册。 其名为“@”的A记录指向我的Docker主机的IP地址 示例-B.de已向另一个域注册器注册。 它的A记录指向我的

我有一个Docker设置,Traefik作为反向代理。 我有一个NGINX容器服务于静态页面。 两个域(example-A.com和example-B.de)应该公开相同的静态页面。 虽然example-A.com按预期正常工作,但example-B.de会得到一个净错误:ERR\u CERT\u AUTHORITY\u INVALID error

示例-A.com在谷歌域名注册。 其名为“@”的A记录指向我的Docker主机的IP地址

示例-B.de已向另一个域注册器注册。 它的A记录指向我的Docker主机的IP地址(即与示例-A.com相同的IP)。我无法使用此注册器配置名称“@”,我只能设置A记录和目标IP

我的traefik.toml是:

defaultEntryPoints = ["http", "https"]

[entryPoints]
  [entryPoints.dashboard]
    address = ":8080"
    [entryPoints.dashboard.auth]
      [entryPoints.dashboard.auth.basic]
        users = ["admin:xxxxxxxxx"]
  [entryPoints.http]
    address = ":80"
      [entryPoints.http.redirect]
        entryPoint = "https"
  [entryPoints.https]
    address = ":443"
      [entryPoints.https.tls]

[api]
entrypoint="dashboard"

[acme]
email = "xxxxxxx@gmail.com"
storage = "acme.json"
entryPoint = "https"
onHostRule = true
  [acme.httpChallenge]
  entryPoint = "http"

[docker]
domain = "my-main-domain.net"
watch = true
network = "traefik"
我的docker-compose.yml是:

version: "3"

services:
  my-web:
    image: nginx:alpine
    container_name: my-web
    volumes:
    - /home/my-directory:/usr/share/nginx/html:ro
    networks:
    - traefik
    labels:
    - traefik.enable=true
    - traefik.frontend.rule=Host:example-B.de,example-A.com
    restart: always
  jupyter:
    [config here... with "traefik.frontend.rule=Host:subdomain1.my-main-domain.net"... remainder of config]
  ghost:
    [config here... with "traefik.frontend.rule=Host:subdomain2.my-main-domain.net"... remainder of config]

networks:
  traefik:
    external: true
奇怪的行为是example-A.com按预期工作(HTTP和HTTPS),而example-B.de在NET:ERR_CERT_AUTHORITY_INVALID(HTTPS;HTTP路由到HTTPS,即相同的错误)下失败,尽管docker-compose.yml在同一docker主机上的同一容器中的设置完全相同(请参见traefik.frontend.rule)在同一个traefik.toml下运行

另一个奇怪的行为:我上网:在我的手机(Chrome)上出现错误证书授权无效错误。在我的电脑(Chrome)上,它在URL栏中显示“404页面未找到”(来自Traefik)和“不安全”,详细信息为“Traefik默认证书-自签名根证书-此证书未经第三方签名”

我的docker-compose.yml中的另外两个docker服务(jupyter和ghost)正在按预期运行

我重新启动了traefik,并在docker-compose.yml上运行了docker

我能发现的唯一区别是不同的域注册器和上面解释的DNS A记录的区别

这个问题似乎与SSL有关,但据我(有限)所知,域注册器与SSL证书无关。此外,DNS设置似乎不是这里的问题,因为浏览器正确解析了域,但随后显示的是错误而不是页面


是否有人能够发现我的设置或配置中的问题,并向我指出修复方法或如何进一步调查?

正如@codinghaus在其评论中指出的那样,解决方案是在域注册器处向域添加CAA记录。 我添加了属性标签“issue”,值为“letsencrypt.org”。
然后我重新启动了traefik和docker compose.yml。

您的问题可能与CAA记录()有关吗?在我的设置中,我遇到了一个问题,letsencrypt无法在我的HAProxy上执行其质询,因为我的域中没有letsencrypt(.com)的CAA记录。我必须在我的域注册器UI上手动创建它,只有在这之后,letsencrypt才能成功地执行挑战。也许你的证书工作的域名注册商有一个人工创建的CAA记录(允许一切),而不工作的域名注册商没有自动创建这样的记录?哇!谢谢@codinghaus!这就是解决办法。你救了我一天!!