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.