gpt4 book ai didi

ssl - Traefik 2.0 TLS TCP 透传

转载 作者:行者123 更新时间:2023-12-04 22:38:11 29 4
gpt4 key购买 nike

我有一个 VM0,其中 Traefik 作为 docker 运行,还有两个目标系统 VM1 和 VM2,它们都有一个运行的网络服务器。

所有 domainA.com 请求都应通过 TCP 路由器和 tls 直通发送到 VM1,因为此 Web 服务会自行处理证书。

所有 domainB.com 请求都应该通过 http 路由器发送到 VM2,Traefik 应该为该域生成 tls 证书。

我现在的问题是,只要我将任何 tls 配置添加到 http 路由器,似乎 tcp passthrough 就不再工作了。在日志中我看到这条消息:

time="2020-03-15T21:46:18Z" level=debug msg="Serving default certificate for request: \"subdomain.DomainA.com\"" time="2020-03-15T21:46:18Z" level=debug msg="http: TLS handshake error from 192.168.1.116:55103: remote error: tls: unknown certificate" time="2020-03-15T21:46:18Z" level=debug msg="Serving default certificate for request: \"subdomain.DomainA.com\"" time="2020-03-15T21:46:18Z" level=debug msg="http: TLS handshake error from 192.168.1.116:55104: remote error: tls: unknown certificate"

如果我通过 Traefik 访问该网站,它会显示一个来自 Traefik 的自签名证书。

如果我删除 http 路由器下的所有 tls 设置,直通将再次工作。

我的动态文件:

http:
routers:

HTTProuter0:
rule: "HostRegexp(`{subdomain:[a-z]+}.domainA.com`)"
service: "domainA"
entryPoints:
- "websecure"
tls:
certResolver: "myresolver"
domains:
- main: "domainA.com"
sans:
- "*.domainA.com"
services:

domainA:
loadBalancer:
servers:
- url: "https://192.168.1.13:4433"

tcp:
routers:
TCProuter0:
rule: "HostSNI(`*`)"
service: "domainB"
entryPoints:
- "websecure"
tls:
passthrough: true

services:
domainB:
loadBalancer:
servers:
- address: "192.168.1.11:443"

我的静态文件:

serversTransport:
insecureSkipVerify: true

entryPoints:
web:
address: ":80"

websecure:
address: ":443"

spain:
address: ":4443"

certificatesResolvers:
myresolver:
acme:
email: email@email.com
storage: /etc/traefik/acme/acme.json
dnsChallenge:
provider: cloudflare
delayBeforeCheck: 60
resolvers:
- "1.1.1.1:53"
- "8.8.8.8:53"

api:
insecure: true
dashboard: true

providers:
docker: {}
file:
directory: /etc/traefik/config
watch: true

log:
filePath: /etc/traefik/traefik.log
level: DEBUG

我现在被这个问题困了几个小时。我不确定这是错误还是我做错了什么?

如有任何帮助,我们将不胜感激!

非常感谢

最佳答案

我发现了问题。难以置信我为此浪费了这么多时间......Traefik 似乎不支持与 HostSNI 中的域结合使用的通配符。

HostSNI(`*`) => 有效

HostSNI(`*.mydomain.com`) => 不起作用!!!!

HostSNI(`www.mydomain.com`,`web.mydomain.com`) => 工作

所以我显式添加了每个域,现在它可以工作了。

关于ssl - Traefik 2.0 TLS TCP 透传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60698050/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com