由于Ubuntu官方源的squid3不支持SSL和高匿,所以需要自己编译支持SSL的版本。
1.安装编译依赖环境和源码
mkdir ~/squid_src;cd ~/squid_src
apt-get install -y build-essential fakeroot devscripts gawk gcc-multilib dpatch libssl-dev openssl squid-langpack ssl-cert
apt-get build-dep squid3
apt-get source squid3
2.修改默认的编译选项,增加SSL支持和高匿
vi squid3-3.3.8/debian/rules
在 DEB_CONFIGURE_EXTRA_FLAGS 配置中添加 --enable-ssl
和 --enable-http-violations
DEB_CONFIGURE_EXTRA_FLAGS := --datadir=/usr/share/squid3 \
--sysconfdir=/etc/squid3 \
--mandir=/usr/share/man \
--enable-inline \
--enable-ssl \
--enable-http-violations \
--enable-async-io=8 \
3.编译 squid3,编译完成的deb包在~/squid_src
目录
cd squid3-3.3.8
debuild -us -uc -b
作为HTTPS代理只需要安装一下几个包就可以了
dpkg -i \
squid3_3.3.8-1ubuntu6.3_amd64.deb \
squid3-common_3.3.8-1ubuntu6.3_all.deb \
squid3-dbg_3.3.8-1ubuntu6.3_amd64.deb
另外,不能在从官方源更新squid3 否则就会前功尽弃了。
HTTPS 代理一定需要使用证书,可以购买付费证书、也可以申请免费证书,最简单的就是自己签发一个证书。
cd /etc/squid3
openssl req -new -keyout server.key -nodes -x509 -days 365 -out server.crt
首先将原配置文件简化,去掉注释和空行
mv squid.conf squid.conf.bak
grep -v ^# squid.conf.bak | grep -v ^$ squid.conf
配置需要的信息:SSL端口与证书, 连接认证, HTTP_header
SSL端口与证书 将原来监听的 http_port 3128
端口改为 https_port 443
并配置证书
https_port 443 cert=/etc/squid3/server.crt key=/etc/squid3/server.key
连接认证 为了不让代理公开使用就需要添加安全措施,比如连接认证 squid3支持的认证方式有很多,而常用的就basic_ncsa_auth
首先将 http_access deny all
改为 http_access allow all
允许所有人连接然后添加以下代码设置为只有认证后可连接。
auth_param basic program /usr/lib/squid3/basic_ncsa_auth /etc/squid3/passwd
auth_param basic children 5 startup=0 idle=1
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off
acl ncsa_users proxy_auth REQUIRED
http_access deny !ncsa_users
http_access allow ncsa_users
如果安装了 Apache httpd 的话就可以用命令直接生成认证用户和密码文件,Nginx 用户则可以借助在线 htpasswd 生成器,将生成信息复制到passwd
文件
vi /etc/squid3/passwd
HTTP_header 默认的情况下squid3会转发浏览器信息到目标服务器,包括代理服务器信息。为了避免这一问题,就需要修改代理连接的 HTTP_header 信息,在最后添加
request_header_access Via deny all
request_header_access X-Forwarded-For deny all
request_header_access All allow all
reply_header_access Server deny all
reply_header_access X-Cache deny all
reply_header_access X-Cache-Lookup deny all
reply_header_access Warning deny all
reply_header_access Expires deny all
reply_header_access Cache-Control deny all
reply_header_access age deny all
最后验证配置文件是否配置正确
squid3 -k parse
如果没有问题就正常使用了
service squid3 restart
支持HTTPS代理的程序不多,但是最重要的 Google Chroem 浏览器支持,这就足够了。 Proxy SwitchyOmega 扩展程序支持 HTTPS 代理和预设认证信息,简直就是完美组合。