ssl Caddy反向代理服务器在尝试中继TLS客户端问候时发出内部错误警报

rdrgkggo  于 2023-01-21  发布在  其他
关注(0)|答案(1)|浏览(187)

我尝试让 *Caddy反向代理服务器 * 在客户端和 * 后台服务器 * 之间中继 *TLS握手 *,但在代理刚收到 TLS客户端hello 时就失败了。Caddy v2.6.2Curl v7.87.0在下面进行测试。

  • /etc/主机 *:
127.0.0.1 localhost back-server.local proxy-server.local
  • Caddy文件备份服务器 *:
{ http_port 2015 }
back-server.local:2016
respond "Hello, world!"
  • Caddyfile代理服务器 *:
{ http_port 2017 }
proxy-server.local:2018 {
  reverse_proxy https://back-server.local:2016 {
    header_up Host {upstream_hostport}
  }
}

以下初始测试结果良好。

$ caddy start --config Caddyfile-back-server
$ caddy start --config Caddyfile-proxy-server
$ curl https://back-server.local:2016
Hello, world!
$ curl https://proxy-server.local:2018
Hello, world!

下一个测试未能中继下面的 TLS客户端hello

$ curl --connect-to back-server.local:2016:proxy-server.local:2018 https://back-server.local:2016
curl: (35) ... internal error

根据捕获的数据包,sni: back-server.localTLS客户端hello 发送到 proxy-server.local:2018,但代理返回 *TLS服务器警报:内部错误 *,然后立即关闭连接。proxy-server.localback-server.local之间没有发生任何通信:2016
可能出了什么问题?如何让它发挥作用?

4uqofj5v

4uqofj5v1#

  • Caddy服务器 * 作为 * 反向代理 * 不使用来自 TLS客户端helloSNI进行到 * 后台服务器 * 的相关 *TLS直通 *,这是 *TLS转发代理 * 的工作。存在用于 *L4路由 * 的Caddy L4插件,包括 * 基于TLS SNI的路由 *。

下面是成功解决这个问题的另一个 * 反向代理 * FRP能够作为 *TLS转发代理 * 以及。

  • /等/主机 *
127.0.0.1 localhost back-server.local proxy-server.local
  • Caddy文件备份服务器 *
{ http_port 2015 }
back-server.local:2016
respond "Hello, world!"
  • frps.ini文件格式 *
[common]
vhost_https_port = 2018
  • frpc.ini*
[common]

[TLS passthrough]
type = https
local_port = 2016
custom_domains = w4.local

然后测试按预期进行。为了简单起见,所有的配置文件都放在PWD中。

$ caddy start --config Caddyfile-back-server
$ frps
$ frpc
$ curl --connect-to back-server.local:2016:proxy-server.local:2018 https://back-server.local:2016
Hello, world!

相关问题