4

我有一个基于https://github.com/silvio/docker-matrix的容器(“矩阵”) (尽管这可能并不重要)。

它在端口 8448 和 3478(不是 80 或 443)上运行服务。

不运行 traefik,只运行 'matrix' 容器,在 'matrix' 容器内,我可以运行 LetsEncrypt 的 certbot,它的请求告诉 LetsEncrypt 尝试在端口 443 上与我联系并提供 ssl 证书,如下所示:

certbot certonly --standalone --test-cert --email admin@amazing.site --agree-tos -d m.amazing.site

提出挑战,接受挑战,证书保存在容器的 dir /etc/letsencrypt 中。

好的,现在我想在运行 Traefik 时执行此操作。

我在我的 docker-compose 文件中为这个容器传递了我的 Traefik 参数,如下所示:

labels:
  - "traefik.acme=false"
  - "traefik.enable=true"
  - "traefik.backend=matrix"
  - "traefik.frontend.rule=Host:m.amazing.site"
  - "traefik.port=443"
restart: always
expose:
 - 443
ports:
  - "8448:8448"
  - "3478:3478"

当我在容器中运行挑战时(与上面相同的命令)

certbot certonly --standalone --test-cert --email admin@amazing.site --agree-tos -d m.amazing.site

我在我的 Traefik 日志中得到以下信息

time="2017-07-14T01:04:35Z" level=error msg="获取证书时出错:找不到域 b374a9118f855cacdb0096846a3dfa0c.f7c92b61d040f9ba250f14cc533ba4b8.acme.invalid 的质询证书,重试时间为 453.949201ms" :04:35Z" level=error msg="获取证书时出错:找不到域 b374a9118f855cacdb0096846a3dfa0c.f7c92b61d040f9ba250f14cc533ba4b8.acme.invalid 的质询证书,重试 808.788592ms" time="2017-07-14T01:" msg="获取证书时出错:找不到域 b374a9118f855cacdb0096846a3dfa0c.f7c92b61d040f9ba250f14cc533ba4b8.acme.invalid 的质询证书,在 1.138006833s 中重试" time="2017-07-14T01:04:37Z 无法获取证书" level=error查找域 b374a9118f855cacdb0096846a3dfa0c 的挑战证书。f7c92b61d040f9ba250f14cc533ba4b8.acme.invalid, retrying in 2.436785791s" time="2017-07-14T01:04:40Z" level=error msg="Error getting cert: Cannot find challenge cert for domain b374a9118f855cacdb0096846a3dfa0c.f7c92b61d040f9ba250f14cc533ba4b8.acme.invalid, retrying in 3.055167113s" time="2017-07-14T01:04:43Z" level=error msg="获取证书时出错:找不到域 b374a9118f855cacdb0096846a3dfa0c.f7c92b61d040f9ba250f14cc533ba4b8.acme.invalid, 重试证书的质询证书。 07-14T01:04:48Z" level=error msg="获取证书时出错:找不到域 b374a9118f855cacdb0096846a3dfa0c.f7c92b61d040f9ba250f14cc533ba4b8.acme.invalid 的质询证书,正在重试 7.5448786511s" time="201:50-147"T level=error msg="获取证书时出错:Cannot find challenge cert for domain b374a9118f855cacdb0096846a3dfa0c.f7c92b61d040f9ba250f14cc533ba4b8.acme.invalid, retrying in 6.313970727s" time="2017-07-14T01:05:01Z" level=error msg="Error getting cert: Cannot find challenge cert for domain 8b1e27af665c4676b47236f25c3ccc73. 1313b1cc8ceaaa7467ba2e5845c08fde.acme.invalid" time="2017-07-14T01:05:01Z" level=debug msg="ACME got nothing 8b1e27af665c4676b47236f25c3ccc73.1313b1cc8ceaaa7467ba2e5845c08fde.acme.invalid" 2017/07/14 01:05:01 server.go: 2753:http:来自 66.133.109.36:55264 的 TLS 握手错误:EOFCannot find challenge cert for domain 8b1e27af665c4676b47236f25c3ccc73.1313b1cc8ceaaa7467ba2e5845c08fde.acme.invalid" time="2017-07-14T01:05:01Z" level=debug msg="ACME got nothing 8b1e27af665c4676b47236f25c3ccc73.1313b1cc8ceaaa7467ba2e5845c08fde.acme.invalid" 2017/07/14 01 :05:01 server.go:2753: http: 来自 66.133.109.36:55264 的 TLS 握手错误:EOFCannot find challenge cert for domain 8b1e27af665c4676b47236f25c3ccc73.1313b1cc8ceaaa7467ba2e5845c08fde.acme.invalid" time="2017-07-14T01:05:01Z" level=debug msg="ACME got nothing 8b1e27af665c4676b47236f25c3ccc73.1313b1cc8ceaaa7467ba2e5845c08fde.acme.invalid" 2017/07/14 01 :05:01 server.go:2753: http: 来自 66.133.109.36:55264 的 TLS 握手错误:EOF

请注意,这些是真实的日志。没有提及我要验证的实际域名。

我究竟做错了什么?

4

1 回答 1

2

您无法立即为特定主机禁用 acme,因为 acme 安装了在所有规则之前执行的路由。

我想出了解决这个问题的方法:

https://gist.github.com/micw/67faf5cd3d4a6f64568ca2bb9a051230

最好的问候,迈克尔。

于 2019-01-12T15:24:42.400 回答