编译 Squid3 搭建HTTPS代理服务器

转载地址https://book.9073.me/web/squid3.html

编译带 SSL 的的Squid3

由于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

安装 squid3

作为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 代理

证书

HTTPS 代理一定需要使用证书,可以购买付费证书、也可以申请免费证书,最简单的就是自己签发一个证书。

cd /etc/squid3
openssl req -new -keyout server.key -nodes -x509 -days 365 -out server.crt

配置squid3

首先将原配置文件简化,去掉注释和空行

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

Google Chrome 使用

支持HTTPS代理的程序不多,但是最重要的 Google Chroem 浏览器支持,这就足够了。 Proxy SwitchyOmega 扩展程序支持 HTTPS 代理和预设认证信息,简直就是完美组合。


你可能感兴趣的:(代理)