转载地址:https://www.darrenfang.com/2015/05/install-squid-on-ubuntu-and-enable-ssl/
由于公司网络限制,无法访问外网某些网站。为了突破限制,需要在外网服务器上安装一个 squid 作为代理,同时为了安全,启用 SSL。
安装openssl
首先需要安装 openssl 及相关的依赖。
apt-get install openssl apt-get install libssl-dev apt-get install ssl-cert
安装squid
直接使用 apt 安装的 squid 没有启用 SSL,所以需要使用源代码编译安装。
apt-get source squid apt-get build-dep squid apt-get install devscripts build-essential fakeroot # squid 版本为 3.3.8 cd squid3-3.3.8 # 修改编译参数 vim debian/rules # 在 DEB_CONFIGURE_EXTRA_FLAGS 配置中添加 # 注意 with-open-ssl 的值为实际 openssl.cnf 所在路径 --enable-ssl \ --with-open-ssl=/usr/lib/ssl/openssl.cnf \ # 编译 squid ./configure debuild -us -uc -b # 安装 cd .. apt-get install squid-langpack dpkg -i squid3-common_3.3.8-1ubuntu6.2_all.deb dpkg -i squid3_3.3.8-1ubuntu6.2_amd64.deb
生成 SSL 证书
可以使用自签名证书,或者去startssl.com申请一个有效期1年的证书。具体细节就自行百度吧。
配置 squid
将配置文件修改成如下内容。我这里没有启用身份验证,如果需要可以自行添加。squid 端口号修改为 9999,也可以按需修改。
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 deny !Safe_ports http_access deny CONNECT !SSL_ports http_access allow localhost manager http_access deny manager http_access allow localhost http_access allow all # 修改为证书路径 https_port 9999 cert=/ssl/ssl.crt key=/ssl/ssl.private.key 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 via off forwarded_for delete dns_v4_first on
需要注意的是,ssl.private.key
是证书的私钥,不需要密码保护,不然 squid 无法启动。可以使用下列命令生成无密码保护的私钥:
openssl rsa -in ssl.key -out ssl.private.key
配置防火墙
我使用的是 ufw,所以运行
ufw allow 9999
重启 squid 就可以正常使用了。
禁用 squid 升级
由于我们是使用源代码编译的 squid,所以升级会破坏配置,需要禁用 squid 升级。
sudo apt-mark hold squid3
参考文章
Squid with –enable-ssl
The system returned: (104) Connection reset by peer
怎么让nginx配置SSL安全证书重启免输入密码
Exclude packages fromapt-get upgrade