0

我很难找到使我的情况可行的任何方法。我有 2 个应用程序:

1:在 sub1.domain.com 上运行的外部服务 Web 应用程序。如果我使用 acme (LetsEncrypt) 在 traefik 后面运行这个应用程序,它可以正常工作。我还有一些后端服务(api/auth),它们都使用有效的 LetsEncrypt 证书运行,并通过 traefik 将它们的 http 流量重定向到 https

[entryPoints.http.redirect]
  entryPoint = "https"

我必须为此服务提供某种形式的 http 到 https 转发。

2:在 sub2.domain.com 上运行的内部服务 Web 应用程序。我有一个自签名的可信证书(内部 CA),如果我将它设置为默认证书,或者我在应用程序本身(在 tomcat 内部)中使用它,它在 traefik 后面工作得很好。但是,由于它是一项内部服务,如果它解决了我的问题,我可以在没有 ssl 的情况下生活。但是,这不适用于 traefik 的 http 到 https 转发。

我一直试图让这两个服务在同一个 traefik 实例后面运行,但我能想到的所有可能的场景都不起作用,因为它们要么仍在进行中,要么根本不起作用。

场景

1:没有http到https的重定向,内部服务不用https,直接使用http即可。然后在后端内部将外部 Web 服务重定向到 https。

问题

  • 无法拥有 2 个 traefik 转发的 traefik 端口 无法将 1 个单个端口转发到另一个 proto(因为后端始终是 http 或 https 端口)
  • 在默认证书上使用 ACME

2:在默认证书上使用 ACME

其他人认为这是个好主意。它只是还没有工作。

3:重用后端ssl证书。让 traefik 无需“ssl 终止”即可重定向。我不确定这是否是同一件事,但有一个名为“passTLSCert”的选项。然而,这似乎只有在 .toml 文件中定义的前端不起作用(可能是因为我使用 docker 作为后端)。

4:使用 DNS-01 质询为我的内部服务创建 SSL 证书。听起来这可行,所以我现在正在使用 CloudFlare 并拥有一个 api 密钥。但是,它似乎不适用于子域。我的问题报告没有回复:https ://github.com/containous/traefik/issues/1953

编辑:我可能能够解决 4 中描述的问题以使其正常工作。内部 DNS 似乎与 traefik 冲突

4

1 回答 1

0

有人决定在我们的内部 DNS 区域中添加每个子域,这意味着 SOA 请求将子域作为名称返回。这与 cloudflare 不兼容,因为内部 dns 区域与 cloudflare dns 不同。

将其更改为包含子域记录的主区域解决了问题(与delayDontCheckDNS选项结合使用)。

于 2017-09-06T08:34:33.463 回答