У меня 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>
Похоже, вы можете заставить это сделать это с помощью элемента конфигурации клиента:
sni = имя_сервера
http://www.stunnel.org/static/stunnel.html - Поиск по SNI