SSL прокси с stunnel

7210
Ilya

Я пытаюсь установить SSL-соединение с Stunnel . Какой-то SSL-прокси.

Конечная цель
Подключить только http КЛИЕНТ к https только СЕРВЕР .

Мой план

  1. КЛИЕНТ: измените конечную точку на ПРОКСИ
  2. ПРОКСИ: используйте stunnel для получения запросов от КЛИЕНТА и перенаправления их на СЕРВЕР

stunnel.conf

cert = /etc/stunnel/stunnel.pem foreground = yes chroot = /var/run/stunnel setuid = stunnel setgid = stunnel pid = /stunnel.pid debug = 7 [my_route] accept = 7121 connect = SERVER:443 ;connect = SERVER:443/somedata 

Тест 1

$openssl s_client -connect SERVER:443 New, TLSv1/SSLv3, Server public key is 2048 bit 

Тест 2

openssl s_client -connect PROXY:7121 New, TLSv1/SSLv3, Server public key is 2048 bit 

Результат (подключение от КЛИЕНТА к СЕРВЕРУ через ПРОКСИ).

Service [my_route] accepted (FD=3) from 10.0.2.2:12345 Service [my_route] started Service [my_route] accepted connection from 10.0.2.2:12345 SSL state (accept): before/accept initialization SSL_accept: 1408F10B: error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number Connection reset: 0 byte(s) sent to SSL, 0 byte(s) sent to socket Local socket (FD=3) closed Service [my_route] finished (0 left) 

Вопросы

  1. Почему IP не соответствует SERVER? Почему он подключен к 10.0.2.2?
    Значит ли это, что я подключаюсь не к тому серверу? Как это может случиться?

  2. Что говорит эта ошибка? Этот удаленный сервер использует другую версию SSL, не так ли?

3
Что вы имеете в виду под "который использует только ssl, только https" nixda 11 лет назад 0
Я имею в виду, что он не поддерживает http. Поддерживает только https. Ilya 11 лет назад 0
Ах, конечно, я виноват. Я неправильно интерпретировал это при первом редактировании nixda 11 лет назад 0

3 ответа на вопрос

0
Laszlo Valko
  1. Почему IP не соответствует SERVER? Почему он подключен к 10.0.2.2?

Поскольку этот IP-адрес не является адресом сервера, к которому он подключается, а адресом клиентского компьютера, с которого он получает (работает openssl s_client).

Значит ли это, что я подключаюсь не к тому серверу? Как это может случиться?

Нет, это не имеет ничего общего с сервером.

  1. Что говорит эта ошибка? Этот удаленный сервер использует другую версию SSL, не так ли?

Это означает, что ваш stunnel пытается передать SSL соединению клиента (openssl s_client). Кажется, они не согласны с используемой версией протокола SSL.

Однако это совершенно неправильно. В конфигурации, которую вы хотите настроить, stunnel должен ждать HTTP-соединений и туннелировать эти соединения с HTTPS на SERVER. Поэтому вы не можете использовать openssl s_client для подключения к вашему stunnel, так как openssl s_client будет использовать SSL, а stunnel будет ожидать подключения не-SSL.

Чтобы решить эту проблему, вам понадобится дополнительная строка client = yesв вашей конфигурации. Затем вместо использования openssl s_client в качестве клиента для вашего stunnel, вы должны либо использовать telnet ( telnet server2 7121), либо программу, способную передавать HTTP на ваш сервер (например, веб-браузер или аналогичный, с URL-адресом, начинающимся как http://PROXY:7121/...).

Кроме того, настоятельно рекомендуется использовать IP-адреса в вашем файле конфигурации (вместо текстовых имен хостов).

Нечто подобное должно работать для вас:

[my_route] client = yes accept = 7121 connect = aaa.bbb.ccc.ddd:443 
0
JakeGould

Похоже, что именно эта проблема решена в этом ответе о сбое сервера ; выделенная жирным шрифтом часть подходит к вашему сценарию:

stunnelСервер имеет options = NO_SSLv3, но клиент пытается подключиться с помощью SSLv3. Вам необходимо обновить клиент для поддержки более новой версии SSL или изменить конфигурацию Stunnel для принятия SSLv3.

-1
把友情留在无盐

добавление этого в файл конфигурации будет делать.

sslversion = all 

и вы могли пропустить другую вещь. Вы должны явно установить «client = yes» или по умолчанию «no».