Stunnel PSK Ошибка

Я построил анонимный прокси-сервер 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 ответ

Решение

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

[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 только принять соединение с локального хоста, в противном случае [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.

Другие вопросы по тегам