Stunnel PSK Ошибка

918
Hartman

Я построил анонимный прокси-сервер 5.29 + squid 3.3 SSL для нескольких целей и хочу включить PSK-авторизацию. Конфигурация сервера Stunnel:

pid = /run/stunnel.pid chroot = /var/lib/stunnel client = no setuid = stunnel setgid = stunnel cert = /etc/stunnel/stunnel.pem  debug = 7 ;output = stunnel.log foreground = yes  [server_psk] accept = 443 accept = :::443 connect = 127.0.0.1:8443 ciphers = PSK PSKsecrets = /etc/stunnel/psk.txt  [server_proxy] accept = 8443 connect = 127.0.1:3128 sslVersion = all ciphers = ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PS options = NO_SSLv2 options = NO_SSLv3 options = CIPHER_SERVER_PREFERENCE 

Но я обнаружил, что не могу подключиться к Интернету и получаю это сообщение на стороне клиента:

LOG5[676]: Service [squid] accepted connection from 127.0.0.1:60216 LOG3[676]: s_connect: s_poll_wait 192.169.169.152:443: TIMEOUTconnect exceeded LOG5[676]: Connection reset: 0 byte(s) sent to SSL, 0 byte(s) sent to socket 

Браузер (Firefox 43) сообщает о двух ошибках, SSL Errorкогда я захожу в Google с HTTPS и Connection Resetкогда я захожу на сайт без поддержки HTTPS. Вот конфигурация на стороне клиента:

client = yes  [local_proxy] accept = 127.0.0.1:8089 connect = 192.169.169.152:443 PSKsecrets = psk.txt CAfile = ca-certs.pem sslVersion = all options = NO_SSLv2 options = NO_SSLv3 

Я подтвердил, что конфигурация squid хороша, и она работает, поэтому я уверен, что проблема возникает в stunnel. Кто-нибудь, имеющий опыт в ошеломлении, может мне помочь?

1

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

1
Hartman

После дня исследований я наконец-то нашел способ решить эту проблему. Совет: клиентская сторона должна быть разделена на две части, например серверная. Поэтому я изменяю конфигурацию на стороне клиента следующим образом:

[local_psk] client = yes accept = 127.0.0.1:8443 connect = 192.168.169.152:443 PSKsecrets = psk.txt  [local_proxy] client = yes accept = 127.0.0.1:8089 connect = 127.0.0.1:8443 sslVersion = all options = NO_SSLv2 options = NO_SSLv3 

Таким образом, процесс действует так:

browser <--> [local_proxy] <--> [local_psk] <==> [server_psk] <--> [server_proxy] <==> website 

где -означает локальный трафик, =означает интернет-трафик и []означает разделы конфигурации в stunnel

И я обновляю опцию [squid]раздела конфигурации сервера acceptот 8443до 127.0.0.1:8443. Это говорит, что stunnel принимает соединение только с localhost, в противном случае [PSK]раздел становится бесполезным. Вот как это выглядит после изменения:

[server_proxy] accept = 127.0.0.1:8443 connect = 127.0.1:3128 sslVersion = all ciphers = ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PS options = NO_SSLv2 options = NO_SSLv3 options = CIPHER_SERVER_PREFERENCE 

НОТА

Эти конфигурации предназначены только для разработки / тестирования. Если вы хотите использовать анонимный прокси-сервер с высокой степенью защиты, вам нужно debug = 0отключить ведение журнала и foreground = noдемон в файле конфигурации stunnel с правильной настройкой конфигурации squid и правил iptables.