stunnel 客户端在与 Apache 通信时使用了不正确的 SNI

stunnel 客户端在与 Apache 通信时使用了不正确的 SNI

我有 stunnel 监听端口 80,并充当连接到 Apache 的客户端,监听端口 443。配置如下。我发现,如果我尝试连接到 localhost:80,连接正常,但如果我连接到 127.0.0.1:80

当我检查 Apache 的日志时,它表明 stunnel 两次都使用 localhost 作为 SNI,但 HTTP 请求在一个案例中列出了 localhost,在另一个案例中列出了 127.0.0.1。是否可以告诉 stunnel 使用 HTTP 请求中的任何内容,或者以某种方式配置两个客户端,每个客户端具有不同的 SNI 值?

stunnel.conf:

debug = 7
options = NO_SSLv2

[xmlrpc-httpd]
client = yes
accept = 80
connect = 443

Apache 错误日志:

[error] Hostname localhost provided via SNI and hostname 127.0.0.1 provided via HTTP are different

Apache 访问日志:

"GET / HTTP/1.1" 200 2138 "-" "Wget/1.13.4 (linux-gnu)"
"GET / HTTP/1.1" 400 743 "-" "Wget/1.13.4 (linux-gnu)"

wget:

$wget -d localhost
---request begin---
GET / HTTP/1.1
User-Agent: Wget/1.13.4 (linux-gnu)
Accept: */*
Host: localhost
Connection: Keep-Alive

---request end---

$wget -d 127.0.0.1
---request begin---
GET / HTTP/1.1
User-Agent: Wget/1.13.4 (linux-gnu)
Accept: */*
Host: 127.0.0.1
Connection: Keep-Alive

---request end---

编辑:

Apache 配置

没什么特别的,这只是一个虚拟主机在监听 443

<VirtualHost *:443>

答案1

看起来您可以使用客户端配置项强制执行此操作:

sni = 服务器名称

http://www.stunnel.org/static/stunnel.html- 搜索 SNI

相关内容