在多个域中使用 Traefik
Using Traefik with multiple domains
我正在尝试使用 Let's Encrypt 生成的两个域和证书设置 docker 化版本的 traefik。
我已将 traefik.toml 修改为如下所示:
[acme]
email = "email@example.com"
storage = "acme.json"
entryPoint = "https"
OnHostRule = true
[[acme.domains]]
main = "domain1.com"
[[acme.domains]]
main = "domain2.com"
并且在 docker-compose 中我添加了这些标签:
labels:
- "traefik.frontend.rule=Host:test-1.domain2.com"
- "traefik.enable=true"
- "traefik.port=80"
当我尝试访问 domain1.com 上的容器并相应更改标签 (frontend.rule) 时,证书正常。
当我尝试访问 domain2.com 上的容器时 (test-1.domain2.com),证书是由 traefik 自签名的。
有人可以为我指明正确的方向,以正确设置与 Let's Encrypt 一起使用的两个域吗?
因此,查看日志显示:
traefik_1 | time="2018-02-15T13:15:35Z" level=debug msg="Look for provided certificate to validate [test-1.domain2.com]..."
traefik_1 | time="2018-02-15T13:15:35Z" level=debug msg="No provided certificate found for domains [test-1.domain2.com], get ACME certificate."
traefik_1 | time="2018-02-15T13:15:35Z" level=debug msg="Challenge GetCertificate test-1.domain2.com"
traefik_1 | time="2018-02-15T13:15:35Z" level=debug msg="ACME got nothing test-1.domain2.com"
和
traefik_1 | time="2018-02-15T13:14:58Z" level=debug msg="Loading ACME certificates [test-1.domain2.com]..."
traefik_1 | time="2018-02-15T13:14:59Z" level=error msg="map[test-1.domain2.com:[test-1.domain2.com] acme: Could not determine solvers]"
traefik_1 | time="2018-02-15T13:14:59Z" level=error msg="Error getting ACME certificates [test-1.domain2.com] : Cannot obtain certificates map[test-1.domain2.com:[test-1.domain2.com] acme: Could not determine solvers]+v"
这导致我 https://community.letsencrypt.org/t/2018-01-09-issue-with-tls-sni-01-and-shared-hosting-infrastructure/49996,您可以在其中阅读,由于安全问题,Let's Encrypt 中的 TLS-SNI-01 验证已被禁用。
您可以使用 DNS challange (https://docs.traefik.io/configuration/acme/#dnsprovider) 应该有效(尚未测试)
抱歉,误导性信息。由于我的环境复杂,我之前的测试不正确,我对你之前的回答不正确。
我做验证切换到dnsChallenge
确实生成并正确使用其他域的新证书。感谢您为我指明正确的方向。
我正在尝试使用 Let's Encrypt 生成的两个域和证书设置 docker 化版本的 traefik。
我已将 traefik.toml 修改为如下所示:
[acme]
email = "email@example.com"
storage = "acme.json"
entryPoint = "https"
OnHostRule = true
[[acme.domains]]
main = "domain1.com"
[[acme.domains]]
main = "domain2.com"
并且在 docker-compose 中我添加了这些标签:
labels:
- "traefik.frontend.rule=Host:test-1.domain2.com"
- "traefik.enable=true"
- "traefik.port=80"
当我尝试访问 domain1.com 上的容器并相应更改标签 (frontend.rule) 时,证书正常。
当我尝试访问 domain2.com 上的容器时 (test-1.domain2.com),证书是由 traefik 自签名的。
有人可以为我指明正确的方向,以正确设置与 Let's Encrypt 一起使用的两个域吗?
因此,查看日志显示:
traefik_1 | time="2018-02-15T13:15:35Z" level=debug msg="Look for provided certificate to validate [test-1.domain2.com]..."
traefik_1 | time="2018-02-15T13:15:35Z" level=debug msg="No provided certificate found for domains [test-1.domain2.com], get ACME certificate."
traefik_1 | time="2018-02-15T13:15:35Z" level=debug msg="Challenge GetCertificate test-1.domain2.com"
traefik_1 | time="2018-02-15T13:15:35Z" level=debug msg="ACME got nothing test-1.domain2.com"
和
traefik_1 | time="2018-02-15T13:14:58Z" level=debug msg="Loading ACME certificates [test-1.domain2.com]..."
traefik_1 | time="2018-02-15T13:14:59Z" level=error msg="map[test-1.domain2.com:[test-1.domain2.com] acme: Could not determine solvers]"
traefik_1 | time="2018-02-15T13:14:59Z" level=error msg="Error getting ACME certificates [test-1.domain2.com] : Cannot obtain certificates map[test-1.domain2.com:[test-1.domain2.com] acme: Could not determine solvers]+v"
这导致我 https://community.letsencrypt.org/t/2018-01-09-issue-with-tls-sni-01-and-shared-hosting-infrastructure/49996,您可以在其中阅读,由于安全问题,Let's Encrypt 中的 TLS-SNI-01 验证已被禁用。
您可以使用 DNS challange (https://docs.traefik.io/configuration/acme/#dnsprovider) 应该有效(尚未测试)
抱歉,误导性信息。由于我的环境复杂,我之前的测试不正确,我对你之前的回答不正确。
我做验证切换到dnsChallenge
确实生成并正确使用其他域的新证书。感谢您为我指明正确的方向。