Я пытаюсь настроить squid3 в качестве прокси-сервера HTTPS, используя данное руководство Вот. Я правильно настроил настройки прокси в моем браузере, и когда я пытаюсь нажать HTTP веб-сайтов, я могу успешно подключиться. Тем не менее, я продолжаю получать сообщение «Ошибка превышения времени ожидания соединения» всякий раз, когда я нажимаю HTTPS протокол и следующая ошибка в моем /var/log/squid3/cache.log
:
2016/06/20 19:12:47| NF getsockopt(SO_ORIGINAL_DST) failed on local=<local_ip_address>:3129 remote=<remote_ip_address>:55209 FD 8 flags=33: (92) Protocol not available
Вот мой /etc/squid3/squid.conf
файл (закомментированные строки удалены для краткости):
auth_param basic program /usr/lib/squid3/basic_ncsa_auth /usr/etc/passwd
auth_param basic casesensitive off
auth_param basic credentialsttl 2 hours
acl user_auth proxy_auth REQUIRED
http_access allow user_auth
acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl CONNECT method CONNECT
http_access allow localhost
http_access allow all
http_port 3127
https_port 3129 intercept ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=4MB key=/etc/squid3/example.com.private cert=/etc/squid3/example.com.cert
ssl_bump server-first all
sslproxy_flags DONT_VERIFY_PEER
sslproxy_cert_error deny all
sslcrtd_program /usr/lib/squid3/ssl_crtd -s /var/lib/ssl_db -M 4MB sslcrtd_children 8 startup=1 idle=1
coredump_dir /var/spool/squid3
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern (Release|Packages(.gz)*)$ 0 20% 2880
refresh_pattern . 0 20% 4320
always_direct allow all
Вот результат моего squid3 -v
:
Squid Cache: Version 3.3.8
(Ubuntu)
configure options: '--build=i686-linux-gnu' '--prefix=/usr' '--includedir=${prefix}/include' '--mandir=${prefix}/share/man' '--infodir=${prefix}/share/info' '--sysconfdir=/etc' '--localstatedir=/var' '--libexecdir=${prefix}/lib/squid3' '--srcdir=.' '--disable-maintainer-mode' '--disable-dependency-tracking' '--disable-silent-rules' '--datadir=/usr/share/squid3' '--sysconfdir=/etc/squid3' '--mandir=/usr/share/man' '--enable-inline' '--enable-async-io=8' '--enable-ssl' '--enable-ssl-crtd' '--enable-storeio=ufs,aufs,diskd,rock' '--enable-removal-policies=lru,heap' '--enable-delay-pools' '--enable-cache-digests' '--enable-underscores' '--enable-icap-client' '--enable-follow-x-forwarded-for' '--enable-auth-basic=DB,fake,getpwnam,LDAP,MSNT,MSNT-multi-domain,NCSA,NIS,PAM,POP3,RADIUS,SASL,SMB' '--enable-auth-digest=file,LDAP' '--enable-auth-negotiate=kerberos,wrapper' '--enable-auth-ntlm=fake,smb_lm' '--enable-external-acl-helpers=file_userip,kerberos_ldap_group,LDAP_group,session,SQL_session,unix_group,wbinfo_group' '--enable-url-rewrite-helpers=fake' '--enable-eui' '--enable-esi' '--enable-icmp' '--enable-zph-qos' '--enable-ecap' '--disable-translation' '--with-swapdir=/var/spool/squid3' '--with-logdir=/var/log/squid3' '--with-pidfile=/var/run/squid3.pid' '--with-filedescriptors=65536' '--with-large-files' '--with-default-user=proxy' '--enable-linux-netfilter' 'build_alias=i686-linux-gnu' 'CFLAGS=-g -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -Wall' 'LDFLAGS=-Wl,-Bsymbolic-functions -fPIE -pie -Wl,-z,relro -Wl,-z,now' 'CPPFLAGS=-D_FORTIFY_SOURCE=2' 'CXXFLAGS=-g -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security'
Я потратил много времени на поиск в Google этой ошибки, но не смог найти решение, которое настраивало бы squid в качестве прокси-сервера HTTP. Как мне заставить это работать?
Возможно, вам стоит подумать об использованииhttp_port
директива с ssl-bump
и нет https_port
, поскольку в ваших браузерах настроен прокси (метод CONNECT).
Режим перехвата подходит для прозрачного прокси (настройки браузера не требуются), когда пакеты автоматически перенаправляются на прокси с помощью iptables. https_port
Директива используется для перехвата и обработки такого трафика, поступающего на прокси.
ssl-bump: http://www.squid-cache.org/Doc/config/ssl_bump/
Эта опция используется, когда запрос CONNECT получен на
http_port
(или новое соединение перехватывается наhttps_port
) при условии, что порт был настроен с флагом ssl-bump. Последующие данные по соединению либо обрабатываются как HTTPS и расшифровываются, либо туннелируются на уровне TCP без дешифрования, в зависимости от первого совпадающего «действия» по неровному подключению.
Для примера ssl-bump: http://wiki.squid-cache.org/ConfigExamples/Intercept/SslBumpExplicit
Ошибка «NF getsockopt (SO_ORIGINAL_DST)» является ошибкой NAT. Это не имеет ничего общего с шифрованием.
Поскольку вы настроили свой браузер для явного использования прокси:
вы ничего не перехватываете. Использование опции «перехват» неверно и приводит к ошибке NAT.
браузер не будет использовать TLS для подключения к прокси. Это настоящая причина того, почему https_port неправильно использовать.
браузер будет отправлять сообщения CONNECT на порт 3127 прокси. Это то, что нужно «натолкнуть».
Итак, что вам нужно сделать, это просто шаг настройки ssl-bump в существующую строку http_port. Должно получиться так:
http_port 3127 ssl-bump \ generate-host-certificates=on \ dynamic_cert_mem_cache_size=4MB \ key=/etc/squid3/example.com.private \ cert=/etc/squid3/example.com.cert
Чтобы правильно настроить SSL-Bump, вам также следует удалить следующие строки:
sslproxy_flags DONT_VERIFY_PEER sslproxy_cert_error deny all always_direct allow all
Они приносят больше вреда, чем пользы, и даже бесполезны для отладки.
Кроме того, обновите прокси-сервер до последней версии основной ветки разработки. TLS и SSL-Bump участвуют в быстро меняющейся гонке вооружений, чтобы повысить безопасность и расшифровать эту лучшую безопасность. Использование более старых версий, чем последняя, так или иначе гарантированно приведет к возникновению проблем. В Squid-3.3 есть проблемы с Elliptic Curve и другими недавними шифрами, прерывания при использовании возобновления сеанса TLS, невозможность обхода закрепления сертификатов с помощью SNI, генерация сертификатов SHA-1 и т. Д.